<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
           "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Coverage Report</title>
<link title="Style" type="text/css" rel="stylesheet" href="css/main.css"/>
<script type="text/javascript" src="js/popup.js"></script>
</head>
<body>
<h5>Coverage Report - org.azeckoski.reflectutils.FieldUtils</h5>
<div class="separator">&nbsp;</div>
<table class="report">
<thead><tr>  <td class="heading">Classes in this File</td>  <td class="heading" width="20%"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Line Coverage</a></td>  <td class="heading" width="20%"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Branch Coverage</a></td>  <td class="heading" width="10%"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Complexity</a></td></tr></thead>
  <tr><td class="text"><a href="org.azeckoski.reflectutils.FieldUtils.html">FieldUtils</a></td><td class="value"><table cellpadding="0" cellspacing="0" align="right"><tr><td>70%&nbsp;</td><td><table class="percentGraph" cellpadding="0" cellspacing="0" width="100"><tr><td class="covered" width="70"></td><td class="uncovered" width="29"></td></tr></table></td></tr></table></td><td class="value"><table cellpadding="0" cellspacing="0" align="right"><tr><td>89%&nbsp;</td><td><table class="percentGraph" cellpadding="0" cellspacing="0" width="100"><tr><td class="covered" width="88"></td><td class="uncovered" width="11"></td></tr></table></td></tr></table></td><td class="value"><span class="hidden">0.0;</span>0</td></tr>
</table>
<div class="separator">&nbsp;</div>
<table cellspacing="0" cellpadding="0" class="src">
<tr>
  <td class="numLine">&nbsp;1</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">/**</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;2</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment"> * $Id: org.azeckoski.reflectutils.FieldUtils.html 28 2008-10-02 16:17:03Z azeckoski $</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;3</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment"> * $URL: http://reflectutils.googlecode.com/svn/maven/site/cobertura/org.azeckoski.reflectutils.FieldUtils.html $</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;4</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment"> * FieldUtils.java - genericdao - May 19, 2008 10:10:15 PM - azeckoski</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;5</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment"> **************************************************************************</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;6</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment"> * Copyright (c) 2008 Aaron Zeckoski</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;7</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment"> * Licensed under the Apache License, Version 2.0</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;8</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment"> * </span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;9</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment"> * A copy of the Apache License has been included in this </span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;10</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment"> * distribution and is available at: http://www.apache.org/licenses/LICENSE-2.0.txt</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;11</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment"> *</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;12</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment"> * Aaron Zeckoski (azeckoski @ gmail.com) (aaronz @ vt.edu) (aaron @ caret.cam.ac.uk)</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;13</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;14</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;15</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">package</span> org.azeckoski.reflectutils;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;16</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;17</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> java.lang.ref.SoftReference;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;18</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> java.lang.reflect.Array;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;19</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> java.lang.reflect.Field;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;20</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> java.lang.reflect.Method;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;21</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> java.util.ArrayList;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;22</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> java.util.List;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;23</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> java.util.Map;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;24</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;25</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> org.azeckoski.reflectutils.ClassFields.FieldsFilter;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;26</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> org.azeckoski.reflectutils.ClassProperty.IndexedProperty;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;27</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> org.azeckoski.reflectutils.ClassProperty.MappedProperty;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;28</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> org.azeckoski.reflectutils.beanutils.DefaultFieldAdapter;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;29</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> org.azeckoski.reflectutils.beanutils.DefaultResolver;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;30</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> org.azeckoski.reflectutils.beanutils.FieldAdapter;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;31</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> org.azeckoski.reflectutils.beanutils.Resolver;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;32</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> org.azeckoski.reflectutils.exceptions.FieldGetValueException;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;33</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> org.azeckoski.reflectutils.exceptions.FieldSetValueException;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;34</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> org.azeckoski.reflectutils.exceptions.FieldnameNotFoundException;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;35</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> org.azeckoski.reflectutils.map.ArrayOrderedMap;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;36</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;37</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">/**</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;38</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment"> * Class which provides methods for dealing with the fields in objects and classes,</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;39</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment"> * this provides the core functionality for the reflect util class&lt;br/&gt;</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;40</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment"> * &lt;br/&gt;</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;41</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment"> * Setting and getting fields supports simple, nested, indexed, and mapped values:&lt;br/&gt;</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;42</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment"> * &lt;b&gt;Simple:&lt;/b&gt; Get/set a field in a bean (or map), Example: "title", "id"&lt;br/&gt;</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;43</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment"> * &lt;b&gt;Nested:&lt;/b&gt; Get/set a field in a bean which is contained in another bean, Example: "someBean.title", "someBean.id"&lt;br/&gt;</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;44</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment"> * &lt;b&gt;Indexed:&lt;/b&gt; Get/set a list/array item by index in a bean, Example: "myList[1]", "anArray[2]"&lt;br/&gt;</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;45</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment"> * &lt;b&gt;Mapped:&lt;/b&gt; Get/set a map entry by key in a bean, Example: "myMap(key)", "someMap(thing)"&lt;br/&gt;</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;46</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment"> * </span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;47</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment"> * @author Aaron Zeckoski (azeckoski @ gmail.com)</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;48</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;49</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">public</span> <span class="keyword">class</span> FieldUtils {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;50</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;51</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">final</span> String DYNABEAN_CLASSNAME = <span class="string">"org.apache.commons.beanutils.DynaBean"</span>;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;52</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">final</span> String DYNABEAN_ADAPTER = <span class="string">"DynaBeanAdapter"</span>;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;53</td>
  <td class="nbHitsCovered">&nbsp;20</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> FieldAdapter fieldAdapter = <span class="keyword">null</span>;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;54</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;55</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/**</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;56</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * Empty constructor - protected</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;57</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;58</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> FieldUtils() {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;59</td>
  <td class="nbHitsCovered">&nbsp;20</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">this</span>( <span class="keyword">null</span> );</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;60</td>
  <td class="nbHitsCovered">&nbsp;20</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;61</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;62</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/**</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;63</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * Constructor which allows the field path name resolver to be set specifically</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;64</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * &lt;br/&gt;</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;65</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * &lt;b&gt;WARNING:&lt;/b&gt; if you don't need this control then just use the {@link #getInstance()} method to get this</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;66</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * </span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;67</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param resolver controls the resolution of indexed, nested, and mapped field paths</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;68</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;69</td>
  <td class="nbHitsCovered">&nbsp;20</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">public</span> FieldUtils(Resolver resolver) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;70</td>
  <td class="nbHitsCovered">&nbsp;20</td>
  <td class="src"><pre class="src">&nbsp;        setResolver(resolver);</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;71</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;72</td>
  <td class="nbHitsCovered">&nbsp;20</td>
  <td class="src"><pre class="src">&nbsp;        loadFieldAdapter();</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;73</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;74</td>
  <td class="nbHitsCovered">&nbsp;20</td>
  <td class="src"><pre class="src">&nbsp;        FieldUtils.setInstance(<span class="keyword">this</span>);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;75</td>
  <td class="nbHitsCovered">&nbsp;20</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;76</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;77</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;78</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> ClassDataCacher getClassDataCacher() {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;79</td>
  <td class="nbHitsCovered">&nbsp;1825</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> ClassDataCacher.getInstance();</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;80</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;81</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;82</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">public</span> ConstructorUtils getConstructorUtils() {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;83</td>
  <td class="nbHitsCovered">&nbsp;5</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> ConstructorUtils.getInstance();</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;84</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;85</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;86</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">public</span> ConversionUtils getConversionUtils() {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;87</td>
  <td class="nbHitsCovered">&nbsp;160</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> ConversionUtils.getInstance();</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;88</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;89</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;90</td>
  <td class="nbHitsCovered">&nbsp;20</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> Resolver nameResolver = <span class="keyword">null</span>;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;91</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">public</span> <span class="keyword">void</span> setResolver(Resolver resolver) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;92</td>
  <td class="nbHitsCovered">&nbsp;39</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (resolver != <span class="keyword">null</span>) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;93</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            <span class="keyword">this</span>.nameResolver = resolver;</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;94</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        } <span class="keyword">else</span> {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;95</td>
  <td class="nbHitsCovered">&nbsp;39</td>
  <td class="src"><pre class="src">&nbsp;            getResolver();</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;96</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;97</td>
  <td class="nbHitsCovered">&nbsp;39</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;98</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> Resolver getResolver() {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;99</td>
  <td class="nbHitsCovered">&nbsp;4835</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (nameResolver == <span class="keyword">null</span>) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;100</td>
  <td class="nbHitsCovered">&nbsp;20</td>
  <td class="src"><pre class="src">&nbsp;            nameResolver = <span class="keyword">new</span> DefaultResolver();</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;101</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;102</td>
  <td class="nbHitsCovered">&nbsp;4835</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> nameResolver;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;103</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;104</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;105</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;106</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/**</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;107</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * loads up the field adapter if the right classes exist,</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;108</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * this allows us to support DynaBeans even though they may not be available </span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;109</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;110</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">void</span> loadFieldAdapter() {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;111</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">// load up the field adapter if possible</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;112</td>
  <td class="nbHitsCovered">&nbsp;20</td>
  <td class="src"><pre class="src">&nbsp;        Class&lt;?&gt; dynaBean = ClassLoaderUtils.getClassFromString(DYNABEAN_CLASSNAME);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;113</td>
  <td class="nbHitsCovered">&nbsp;20</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (dynaBean != <span class="keyword">null</span>) {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;114</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            <span class="comment">// assumes the adapter impl is in the same path as the interface</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;115</td>
  <td class="nbHitsCovered">&nbsp;20</td>
  <td class="src"><pre class="src">&nbsp;            String path = FieldAdapter.<span class="keyword">class</span>.getName();</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;116</td>
  <td class="nbHitsCovered">&nbsp;20</td>
  <td class="src"><pre class="src">&nbsp;            path = path.replace(FieldAdapter.<span class="keyword">class</span>.getSimpleName(), DYNABEAN_ADAPTER);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;117</td>
  <td class="nbHitsCovered">&nbsp;20</td>
  <td class="src"><pre class="src">&nbsp;            Class&lt;?&gt; adapterClass = ClassLoaderUtils.getClassFromString(path);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;118</td>
  <td class="nbHitsCovered">&nbsp;20</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">if</span> (adapterClass == <span class="keyword">null</span>) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;119</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                <span class="keyword">throw</span> <span class="keyword">new</span> IllegalStateException(<span class="string">"Could not find adapter class: "</span> + DYNABEAN_ADAPTER);</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;120</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;121</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">try</span> {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;122</td>
  <td class="nbHitsCovered">&nbsp;20</td>
  <td class="src"><pre class="src">&nbsp;                fieldAdapter = (FieldAdapter) adapterClass.newInstance();</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;123</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            } <span class="keyword">catch</span> (Exception e) {</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;124</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                <span class="keyword">throw</span> <span class="keyword">new</span> RuntimeException(<span class="string">"Failed to instantiate field adapter: "</span> + adapterClass, e);</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;125</td>
  <td class="nbHitsCovered">&nbsp;20</td>
  <td class="src"><pre class="src">&nbsp;            }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;126</td>
  <td class="nbHitsCovered">&nbsp;20</td>
  <td class="src"><pre class="src">&nbsp;        } <span class="keyword">else</span> {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;127</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            getFieldAdapter(); <span class="comment">// loads the default</span></span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;128</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;129</td>
  <td class="nbHitsCovered">&nbsp;20</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;130</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/**</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;131</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * INTERNAL USAGE</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;132</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @return the field adapter being used by this set of field utils</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;133</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;134</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">public</span> FieldAdapter getFieldAdapter() {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;135</td>
  <td class="nbHitsCovered">&nbsp;34</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (fieldAdapter == <span class="keyword">null</span>) {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;136</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            <span class="comment">// load the default which does nothing</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;137</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            fieldAdapter = <span class="keyword">new</span> DefaultFieldAdapter();</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;138</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;139</td>
  <td class="nbHitsCovered">&nbsp;34</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> fieldAdapter;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;140</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;141</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;142</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;143</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/**</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;144</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * Analyze a class and produce an object which contains information about it and its fields</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;145</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param &lt;T&gt;</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;146</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param cls any class</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;147</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @return the ClassFields analysis object which contains the information about this object class</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;148</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws IllegalArgumentException if class is null or primitive</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;149</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;150</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">public</span> &lt;T&gt; ClassFields&lt;T&gt; analyzeClass(Class&lt;T&gt; cls) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;151</td>
  <td class="nbHitsCovered">&nbsp;1825</td>
  <td class="src"><pre class="src">&nbsp;        ClassFields&lt;T&gt; cf = getClassDataCacher().getClassFields(cls);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;152</td>
  <td class="nbHitsCovered">&nbsp;1825</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> cf;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;153</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;154</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;155</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/**</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;156</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * Analyze an object and produce an object which contains information about it and its fields</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;157</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param obj any object</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;158</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @return the ClassFields analysis object which contains the information about this object class</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;159</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws IllegalArgumentException if obj is null</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;160</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;161</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    @SuppressWarnings(<span class="string">"unchecked"</span>)</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;162</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">public</span> &lt;T&gt; ClassFields&lt;T&gt; analyzeObject(Object obj) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;163</td>
  <td class="nbHitsCovered">&nbsp;1527</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (obj == <span class="keyword">null</span>) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;164</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"obj cannot be null"</span>);</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;165</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;166</td>
  <td class="nbHitsCovered">&nbsp;1527</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (Class.<span class="keyword">class</span>.equals(obj)) {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;167</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            <span class="comment">// this is a class so we should pass it over to the other method</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;168</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            <span class="keyword">return</span> analyzeClass((Class)obj);</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;169</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;170</td>
  <td class="nbHitsCovered">&nbsp;1527</td>
  <td class="src"><pre class="src">&nbsp;        Class&lt;T&gt; cls = (Class&lt;T&gt;) obj.getClass();</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;171</td>
  <td class="nbHitsCovered">&nbsp;1527</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> analyzeClass(cls);</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;172</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;173</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;174</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/**</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;175</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * Finds the type for a field based on the given class and the field name</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;176</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param type any class type</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;177</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param name the name of a field in this class (can be nested, indexed, mapped, etc.)</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;178</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @return the type of the field (will be {@link Object} if the type is indeterminate)</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;179</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;180</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">public</span> Class&lt;?&gt; getFieldType(Class&lt;?&gt; type, String name) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;181</td>
  <td class="nbHitsCovered">&nbsp;5</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (type == <span class="keyword">null</span> || name == <span class="keyword">null</span>) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;182</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"type and name must not be null"</span>);</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;183</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;184</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">// get the nested class or return Object.class as a cop out</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;185</td>
  <td class="nbHitsCovered">&nbsp;5</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">while</span> (getResolver().hasNested(name)) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;186</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            String next = getResolver().next(name);</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;187</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            Class&lt;?&gt; nestedClass = <span class="keyword">null</span>;</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;188</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            <span class="keyword">if</span> (Object.<span class="keyword">class</span>.equals(type)</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;189</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                    || Map.<span class="keyword">class</span>.isAssignableFrom(type)</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;190</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                    || getResolver().isMapped(next)</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;191</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                    || getResolver().isIndexed(next) ) {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;192</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                <span class="comment">// these can contain objects or it is Object so we bail out</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;193</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                <span class="keyword">return</span> Object.<span class="keyword">class</span>;</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;194</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            } <span class="keyword">else</span> {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;195</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                <span class="comment">// a real class, hooray, analyze it</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;196</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                ClassFields&lt;?&gt; cf = analyzeClass(type);</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;197</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                nestedClass = cf.getFieldType(name);</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;198</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;199</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            type = nestedClass;</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;200</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            name = getResolver().remove(name);</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;201</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        }</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;202</td>
  <td class="nbHitsCovered">&nbsp;5</td>
  <td class="src"><pre class="src">&nbsp;        String targetName = getResolver().getProperty(name); <span class="comment">// simple name of target field</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;203</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">// get the type</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;204</td>
  <td class="nbHitsCovered">&nbsp;5</td>
  <td class="src"><pre class="src">&nbsp;        Class&lt;?&gt; fieldType = <span class="keyword">null</span>;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;205</td>
  <td class="nbHitsCovered">&nbsp;5</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> ( ConstructorUtils.isClassObjectHolder(type) </pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;206</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                || Object.<span class="keyword">class</span>.equals(type) ) {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;207</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            <span class="comment">// special handling for the holder types, needed because attempting to analyze a map or other container will cause a failure</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;208</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            fieldType = Object.<span class="keyword">class</span>;</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;209</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        } <span class="keyword">else</span> {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;210</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            <span class="comment">// normal object</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;211</td>
  <td class="nbHitsCovered">&nbsp;5</td>
  <td class="src"><pre class="src">&nbsp;            ClassFields&lt;?&gt; cf = analyzeClass(type);</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;212</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">try</span> {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;213</td>
  <td class="nbHitsCovered">&nbsp;5</td>
  <td class="src"><pre class="src">&nbsp;                fieldType = cf.getFieldType(targetName);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;214</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            } <span class="keyword">catch</span> (FieldnameNotFoundException fnfe) {</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;215</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                <span class="comment">// could not find this as a standard field so handle as internal lookup</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;216</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                ClassData&lt;?&gt; cd = cf.getClassData();</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;217</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                Field field = getFieldIfPossible(cd, name);</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;218</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                <span class="keyword">if</span> (field == <span class="keyword">null</span>) {</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;219</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                    <span class="keyword">throw</span> <span class="keyword">new</span> FieldnameNotFoundException(<span class="string">"Could not find field with name ("</span>+name+<span class="string">") in class ("</span> + type + <span class="string">") after extended look into non-visible fields"</span>, fnfe);</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;220</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;221</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                fieldType = field.getType();</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;222</td>
  <td class="nbHitsCovered">&nbsp;5</td>
  <td class="src"><pre class="src">&nbsp;            }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;223</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;224</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">// special handling for indexed and mapped names</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;225</td>
  <td class="nbHitsCovered">&nbsp;5</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (getResolver().isIndexed(name) || getResolver().isMapped(name)) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;226</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            <span class="keyword">if</span> ( ConstructorUtils.isClassArray(fieldType) ) {</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;227</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                <span class="comment">// use the array component type</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;228</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                fieldType = type.getComponentType();</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;229</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            } <span class="keyword">else</span> {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;230</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                <span class="comment">// default for contained type of holders</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;231</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                fieldType = Object.<span class="keyword">class</span>;</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;232</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;233</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;234</td>
  <td class="nbHitsCovered">&nbsp;5</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> fieldType;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;235</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;236</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;237</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/**</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;238</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * Finds the type for a field based on the containing object and the field name</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;239</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param obj any object</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;240</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param name the name of a field in this object (can be nested, indexed, mapped, etc.)</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;241</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @return the type of the field (will be {@link Object} if the type is indeterminate)</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;242</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws FieldnameNotFoundException if the name is invalid for this obj</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;243</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws IllegalArgumentException if the params are null</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;244</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;245</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    @SuppressWarnings(<span class="string">"unchecked"</span>)</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;246</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">public</span> Class&lt;?&gt; getFieldType(Object obj, String name) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;247</td>
  <td class="nbHitsCovered">&nbsp;163</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (obj == <span class="keyword">null</span> || name == <span class="keyword">null</span>) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;248</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"obj and name must not be null"</span>);</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;249</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;250</td>
  <td class="nbHitsCovered">&nbsp;163</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (Class.<span class="keyword">class</span>.equals(obj)) {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;251</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            <span class="comment">// this is a class so we should pass it over to the other method</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;252</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            <span class="keyword">return</span> getFieldType((Class&lt;?&gt;)obj, name); <span class="comment">// EXIT</span></span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;253</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;254</td>
  <td class="nbHitsCovered">&nbsp;163</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> ( Object.<span class="keyword">class</span>.equals(obj.getClass()) ) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;255</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            <span class="keyword">return</span> Object.<span class="keyword">class</span>; <span class="comment">// EXIT</span></span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;256</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;257</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">// get the nested object or die</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;258</td>
  <td class="nbHitsCovered">&nbsp;163</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">while</span> (getResolver().hasNested(name)) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;259</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            String next = getResolver().next(name);</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;260</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            Object nestedBean = <span class="keyword">null</span>;</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;261</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            <span class="keyword">if</span> (Map.<span class="keyword">class</span>.isAssignableFrom(obj.getClass())) {</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;262</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                nestedBean = getValueOfMap((Map) obj, next);</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;263</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            } <span class="keyword">else</span> <span class="keyword">if</span> (getResolver().isMapped(next)) {</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;264</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                nestedBean = getMappedValue(obj, next);</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;265</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            } <span class="keyword">else</span> <span class="keyword">if</span> (getResolver().isIndexed(next)) {</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;266</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                nestedBean = getIndexedValue(obj, next);</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;267</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            } <span class="keyword">else</span> {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;268</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                nestedBean = getSimpleValue(obj, next);</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;269</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;270</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            <span class="keyword">if</span> (nestedBean == <span class="keyword">null</span>) {</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;271</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                <span class="comment">// no auto create so we have to fail here</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;272</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                <span class="keyword">throw</span> <span class="keyword">new</span> NullPointerException(<span class="string">"Nested traversal failure: null field value for name ("</span> </span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;273</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                        + name + <span class="string">") on object class ("</span> + obj.getClass() + <span class="string">") for object: "</span> + obj);</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;274</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;275</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            obj = nestedBean;</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;276</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            name = getResolver().remove(name);</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;277</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        }</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;278</td>
  <td class="nbHitsCovered">&nbsp;163</td>
  <td class="src"><pre class="src">&nbsp;        String targetName = getResolver().getProperty(name); <span class="comment">// simple name of target field</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;279</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">// get the type</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;280</td>
  <td class="nbHitsCovered">&nbsp;163</td>
  <td class="src"><pre class="src">&nbsp;        Class&lt;?&gt; fieldType = <span class="keyword">null</span>;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;281</td>
  <td class="nbHitsCovered">&nbsp;163</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (fieldAdapter.isAdaptableObject(obj)) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;282</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            fieldType = fieldAdapter.getFieldType(obj, targetName);</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;283</td>
  <td class="nbHitsCovered">&nbsp;163</td>
  <td class="src"><pre class="src">&nbsp;        } <span class="keyword">else</span> <span class="keyword">if</span> ( ConstructorUtils.isClassObjectHolder(obj.getClass()) </pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;284</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                || Object.<span class="keyword">class</span>.equals(obj.getClass()) ) {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;285</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            <span class="comment">// special handling for the holder types, needed because attempting to analyze a map or other container will cause a failure</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;286</td>
  <td class="nbHitsCovered">&nbsp;13</td>
  <td class="src"><pre class="src">&nbsp;            fieldType = Object.<span class="keyword">class</span>;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;287</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        } <span class="keyword">else</span> {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;288</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            <span class="comment">// normal object</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;289</td>
  <td class="nbHitsCovered">&nbsp;150</td>
  <td class="src"><pre class="src">&nbsp;            ClassFields&lt;?&gt; cf = analyzeObject(obj);</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;290</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">try</span> {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;291</td>
  <td class="nbHitsCovered">&nbsp;150</td>
  <td class="src"><pre class="src">&nbsp;                ClassProperty cp = cf.getClassProperty(targetName);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;292</td>
  <td class="nbHitsCovered">&nbsp;145</td>
  <td class="src"><pre class="src">&nbsp;                fieldType = cp.getType();</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;293</td>
  <td class="nbHitsCovered">&nbsp;5</td>
  <td class="src"><pre class="src">&nbsp;            } <span class="keyword">catch</span> (FieldnameNotFoundException fnfe) {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;294</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                <span class="comment">// could not find this as a standard field so handle as internal lookup</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;295</td>
  <td class="nbHitsCovered">&nbsp;5</td>
  <td class="src"><pre class="src">&nbsp;                ClassData&lt;?&gt; cd = cf.getClassData();</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;296</td>
  <td class="nbHitsCovered">&nbsp;5</td>
  <td class="src"><pre class="src">&nbsp;                Field field = getFieldIfPossible(cd, name);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;297</td>
  <td class="nbHitsCovered">&nbsp;5</td>
  <td class="src"><pre class="src">&nbsp;                <span class="keyword">if</span> (field == <span class="keyword">null</span>) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;298</td>
  <td class="nbHitsCovered">&nbsp;1</td>
  <td class="src"><pre class="src">&nbsp;                    <span class="keyword">throw</span> <span class="keyword">new</span> FieldnameNotFoundException(<span class="string">"Could not find field with name ("</span>+name+<span class="string">") on object ("</span> + obj + <span class="string">") after extended look into non-visible fields"</span>, fnfe);</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;299</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;300</td>
  <td class="nbHitsCovered">&nbsp;4</td>
  <td class="src"><pre class="src">&nbsp;                fieldType = field.getType();</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;301</td>
  <td class="nbHitsCovered">&nbsp;145</td>
  <td class="src"><pre class="src">&nbsp;            }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;302</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;303</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">// special handling for indexed and mapped names</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;304</td>
  <td class="nbHitsCovered">&nbsp;162</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (getResolver().isIndexed(name) || getResolver().isMapped(name)) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;305</td>
  <td class="nbHitsCovered">&nbsp;34</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">if</span> ( ConstructorUtils.isClassArray(fieldType) ) {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;306</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                <span class="comment">// use the array component type</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;307</td>
  <td class="nbHitsCovered">&nbsp;11</td>
  <td class="src"><pre class="src">&nbsp;                fieldType = fieldType.getComponentType();</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;308</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            } <span class="keyword">else</span> {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;309</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                <span class="comment">// default for contained type of holders</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;310</td>
  <td class="nbHitsCovered">&nbsp;23</td>
  <td class="src"><pre class="src">&nbsp;                fieldType = Object.<span class="keyword">class</span>;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;311</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;312</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;313</td>
  <td class="nbHitsCovered">&nbsp;162</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> fieldType;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;314</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;315</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;316</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/**</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;317</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * Get the types of the fields of a specific class type &lt;br/&gt;</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;318</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * returns the method names as fields (without the "get"/"is" part and camelCased)</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;319</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param type any class</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;320</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param filter (optional) indicates the fields to return the types for, can be null for defaults</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;321</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @return a map of field name -&gt; class type</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;322</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;323</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">public</span> Map&lt;String, Class&lt;?&gt;&gt; getFieldTypes(Class&lt;?&gt; type, FieldsFilter filter) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;324</td>
  <td class="nbHitsCovered">&nbsp;253</td>
  <td class="src"><pre class="src">&nbsp;        ClassFields&lt;?&gt; cf = analyzeClass(type);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;325</td>
  <td class="nbHitsCovered">&nbsp;253</td>
  <td class="src"><pre class="src">&nbsp;        Map&lt;String, Class&lt;?&gt;&gt; types = cf.getFieldTypes(filter);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;326</td>
  <td class="nbHitsCovered">&nbsp;253</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> types;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;327</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;328</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;329</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/**</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;330</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * Get the names of all fields in a class</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;331</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param cls any class</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;332</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @return a list of the field names</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;333</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;334</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">public</span> &lt;T&gt; List&lt;String&gt; getFieldNames(Class&lt;T&gt; cls) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;335</td>
  <td class="nbHitsCovered">&nbsp;2</td>
  <td class="src"><pre class="src">&nbsp;        ClassFields&lt;T&gt; cf = analyzeClass(cls);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;336</td>
  <td class="nbHitsCovered">&nbsp;2</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> cf.getFieldNames();</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;337</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;338</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;339</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">public</span> &lt;T&gt; List&lt;String&gt; getFieldNames(Class&lt;T&gt; cls, FieldsFilter filter) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;340</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        ClassFields&lt;T&gt; cf = analyzeClass(cls);</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;341</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        <span class="keyword">return</span> cf.getFieldNames();</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;342</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;343</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;344</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/**</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;345</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * Get the values of all readable fields on an object (may not all be writeable)</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;346</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param obj any object</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;347</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @return a map of field name -&gt; value</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;348</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws IllegalArgumentException if the obj is null</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;349</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;350</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">public</span> Map&lt;String, Object&gt; getFieldValues(Object obj) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;351</td>
  <td class="nbHitsCovered">&nbsp;5</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> getFieldValues(obj, FieldsFilter.READABLE, <span class="keyword">false</span>);</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;352</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;353</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;354</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/**</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;355</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * Get the values of all fields on an object but optionally filter the fields used</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;356</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param obj any object</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;357</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param filter (optional) indicates the fields to return the values for, can be null for defaults &lt;br/&gt;</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;358</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * WARNING: getting the field values from settable only fields works as expected (i.e. you will an empty map)</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;359</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param includeClassField if true then the value from the "getClass()" method is returned as part of the </span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;360</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * set of object values with a type of {@link Class} and a field name of "class"</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;361</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @return a map of field name -&gt; value</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;362</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws IllegalArgumentException if the obj is null</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;363</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;364</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">public</span> Map&lt;String, Object&gt; getFieldValues(Object obj, FieldsFilter filter, <span class="keyword">boolean</span> includeClassField) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;365</td>
  <td class="nbHitsCovered">&nbsp;236</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (obj == <span class="keyword">null</span>) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;366</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"obj cannot be null"</span>);</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;367</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;368</td>
  <td class="nbHitsCovered">&nbsp;236</td>
  <td class="src"><pre class="src">&nbsp;        Map&lt;String, Object&gt; values = <span class="keyword">new</span> ArrayOrderedMap&lt;String, Object&gt;();</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;369</td>
  <td class="nbHitsCovered">&nbsp;236</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (includeClassField) {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;370</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            <span class="comment">// add as the first field</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;371</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            values.put(ClassFields.FIELD_CLASS, obj.getClass());</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;372</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;373</td>
  <td class="nbHitsCovered">&nbsp;236</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (fieldAdapter.isAdaptableObject(obj)) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;374</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            values.putAll( fieldAdapter.getFieldValues(obj, filter) );</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;375</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        } <span class="keyword">else</span> {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;376</td>
  <td class="nbHitsCovered">&nbsp;236</td>
  <td class="src"><pre class="src">&nbsp;            Map&lt;String, Class&lt;?&gt;&gt; types = getFieldTypes(obj.getClass(), filter);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;377</td>
  <td class="nbHitsCovered">&nbsp;236</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">if</span> (FieldsFilter.WRITEABLE.equals(filter)) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;378</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                types.clear();</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;379</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;380</td>
  <td class="nbHitsCovered">&nbsp;236</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">for</span> (String name : types.keySet()) {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;381</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                <span class="keyword">try</span> {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;382</td>
  <td class="nbHitsCovered">&nbsp;942</td>
  <td class="src"><pre class="src">&nbsp;                    Object o = getFieldValue(obj, name);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;383</td>
  <td class="nbHitsCovered">&nbsp;942</td>
  <td class="src"><pre class="src">&nbsp;                    values.put(name, o);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;384</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                } <span class="keyword">catch</span> (RuntimeException e) {</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;385</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                    <span class="comment">// failed to get the value so we will skip this one</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;386</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                    <span class="keyword">continue</span>;</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;387</td>
  <td class="nbHitsCovered">&nbsp;942</td>
  <td class="src"><pre class="src">&nbsp;                }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;388</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;389</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;390</td>
  <td class="nbHitsCovered">&nbsp;236</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> values;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;391</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;392</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;393</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/**</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;394</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * Get the value of a field on an object,</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;395</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * name can be nested, indexed, or mapped</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;396</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param obj any object</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;397</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param name the name of a field on this object</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;398</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @return the value of the field</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;399</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws FieldnameNotFoundException if this field name is invalid for this object</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;400</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws FieldGetValueException if the field is not readable or not visible</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;401</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws IllegalArgumentException if there is a failure getting the value</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;402</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;403</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    @SuppressWarnings(<span class="string">"unchecked"</span>)</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;404</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">public</span> Object getFieldValue(Object obj, String name) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;405</td>
  <td class="nbHitsCovered">&nbsp;1157</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (obj == <span class="keyword">null</span>) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;406</td>
  <td class="nbHitsCovered">&nbsp;1</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"obj cannot be null"</span>);</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;407</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;408</td>
  <td class="nbHitsCovered">&nbsp;1156</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (name == <span class="keyword">null</span> || <span class="string">""</span>.equals(name)) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;409</td>
  <td class="nbHitsCovered">&nbsp;1</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"field name cannot be null or blank"</span>);</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;410</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;411</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;412</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">// Resolve nested references</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;413</td>
  <td class="nbHitsCovered">&nbsp;1155</td>
  <td class="src"><pre class="src">&nbsp;        Holder holder = unpackNestedName(name, obj, <span class="keyword">false</span>);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;414</td>
  <td class="nbHitsCovered">&nbsp;1154</td>
  <td class="src"><pre class="src">&nbsp;        name = holder.getName();</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;415</td>
  <td class="nbHitsCovered">&nbsp;1154</td>
  <td class="src"><pre class="src">&nbsp;        obj = holder.getObject();</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;416</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;417</td>
  <td class="nbHitsCovered">&nbsp;1154</td>
  <td class="src"><pre class="src">&nbsp;        Object value = <span class="keyword">null</span>;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;418</td>
  <td class="nbHitsCovered">&nbsp;1154</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (Map.<span class="keyword">class</span>.isAssignableFrom(obj.getClass())) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;419</td>
  <td class="nbHitsCovered">&nbsp;4</td>
  <td class="src"><pre class="src">&nbsp;            value = getValueOfMap((Map) obj, name);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;420</td>
  <td class="nbHitsCovered">&nbsp;1150</td>
  <td class="src"><pre class="src">&nbsp;        } <span class="keyword">else</span> <span class="keyword">if</span> (getResolver().isMapped(name)) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;421</td>
  <td class="nbHitsCovered">&nbsp;7</td>
  <td class="src"><pre class="src">&nbsp;            value = getMappedValue(obj, name);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;422</td>
  <td class="nbHitsCovered">&nbsp;1143</td>
  <td class="src"><pre class="src">&nbsp;        } <span class="keyword">else</span> <span class="keyword">if</span> (getResolver().isIndexed(name)) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;423</td>
  <td class="nbHitsCovered">&nbsp;11</td>
  <td class="src"><pre class="src">&nbsp;            value = getIndexedValue(obj, name);</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;424</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        } <span class="keyword">else</span> {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;425</td>
  <td class="nbHitsCovered">&nbsp;1132</td>
  <td class="src"><pre class="src">&nbsp;            value = getSimpleValue(obj, name);</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;426</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;427</td>
  <td class="nbHitsCovered">&nbsp;1147</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> value;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;428</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;429</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;430</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/**</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;431</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * Get the value of a field on an object as a specific type,</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;432</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * name can be nested, indexed, or mapped</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;433</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param obj any object</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;434</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param name the name of a field on this object</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;435</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param asType the type to return the value as (converts as needed)</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;436</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @return the value in the field as the type requested</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;437</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws FieldnameNotFoundException if this field name is invalid for this object</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;438</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws FieldGetValueException if the field is not readable or not visible</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;439</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws UnsupportedOperationException if the value cannot be converted to the type requested</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;440</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws IllegalArgumentException if there is a failure getting the value</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;441</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;442</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">public</span> &lt;T&gt; T getFieldValue(Object obj, String name, Class&lt;T&gt; asType) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;443</td>
  <td class="nbHitsCovered">&nbsp;3</td>
  <td class="src"><pre class="src">&nbsp;        Object o = getFieldValue(obj, name);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;444</td>
  <td class="nbHitsCovered">&nbsp;3</td>
  <td class="src"><pre class="src">&nbsp;        T value = getConversionUtils().convert(o, asType);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;445</td>
  <td class="nbHitsCovered">&nbsp;3</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> value;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;446</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;447</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;448</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/**</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;449</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * Set the value of a field on an object (automatically auto converts),</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;450</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * name can be nested, indexed, or mapped</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;451</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * </span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;452</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param obj any object</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;453</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param name the name of a field on this object</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;454</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param value the value to set the field to (must match target exactly)</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;455</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws FieldnameNotFoundException if this field name is invalid for this object</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;456</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws FieldSetValueException if the field is not writeable or visible</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;457</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws IllegalArgumentException if there is a general failure setting the value</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;458</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;459</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">public</span> <span class="keyword">void</span> setFieldValue(Object obj, String name, Object value) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;460</td>
  <td class="nbHitsCovered">&nbsp;109</td>
  <td class="src"><pre class="src">&nbsp;        setFieldValue(obj, name, value, <span class="keyword">true</span>);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;461</td>
  <td class="nbHitsCovered">&nbsp;102</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;462</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;463</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/**</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;464</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * Set the value of a field on an object (optionally convert the value to the field type),</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;465</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * name can be nested, indexed, or mapped</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;466</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * </span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;467</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param obj any object</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;468</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param name the name of a field on this object</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;469</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param value the value to set the field to</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;470</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param autoConvert if true then the value will be converted to the target value type if it is possible,</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;471</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * otherwise the value must match the target type exactly</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;472</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws FieldnameNotFoundException if this field name is invalid for this object</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;473</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws UnsupportedOperationException if this value cannot be auto converted to the type specified</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;474</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws FieldSetValueException if the field is not writeable or visible</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;475</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws IllegalArgumentException if there is a general failure setting the value</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;476</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;477</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    @SuppressWarnings(<span class="string">"unchecked"</span>)</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;478</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">public</span> <span class="keyword">void</span> setFieldValue(Object obj, String name, Object value, <span class="keyword">boolean</span> autoConvert) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;479</td>
  <td class="nbHitsCovered">&nbsp;175</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (obj == <span class="keyword">null</span>) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;480</td>
  <td class="nbHitsCovered">&nbsp;3</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"obj cannot be null"</span>);</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;481</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;482</td>
  <td class="nbHitsCovered">&nbsp;172</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (name == <span class="keyword">null</span> || <span class="string">""</span>.equals(name)) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;483</td>
  <td class="nbHitsCovered">&nbsp;2</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"field name cannot be null or blank"</span>);</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;484</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;485</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;486</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">// Resolve nested references</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;487</td>
  <td class="nbHitsCovered">&nbsp;170</td>
  <td class="src"><pre class="src">&nbsp;        Holder holder = unpackNestedName(name, obj, <span class="keyword">true</span>);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;488</td>
  <td class="nbHitsCovered">&nbsp;170</td>
  <td class="src"><pre class="src">&nbsp;        name = holder.getName();</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;489</td>
  <td class="nbHitsCovered">&nbsp;170</td>
  <td class="src"><pre class="src">&nbsp;        obj = holder.getObject();</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;490</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;491</td>
  <td class="nbHitsCovered">&nbsp;170</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (autoConvert) {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;492</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            <span class="comment">// auto convert the value to the target type if possible</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;493</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            <span class="comment">//            String targetName = getResolver().getProperty(name); // simple name of target field</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;494</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            <span class="comment">// attempt to convert the value into the target type</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;495</td>
  <td class="nbHitsCovered">&nbsp;156</td>
  <td class="src"><pre class="src">&nbsp;            Class&lt;?&gt; type = getFieldType(obj, name);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;496</td>
  <td class="nbHitsCovered">&nbsp;155</td>
  <td class="src"><pre class="src">&nbsp;            value = getConversionUtils().convert(value, type);</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;497</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;498</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;499</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">// set the value</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;500</td>
  <td class="nbHitsCovered">&nbsp;169</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (Map.<span class="keyword">class</span>.isAssignableFrom(obj.getClass())) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;501</td>
  <td class="nbHitsCovered">&nbsp;16</td>
  <td class="src"><pre class="src">&nbsp;            setValueOfMap((Map) obj, name, value);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;502</td>
  <td class="nbHitsCovered">&nbsp;153</td>
  <td class="src"><pre class="src">&nbsp;        } <span class="keyword">else</span> <span class="keyword">if</span> (getResolver().isMapped(name)) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;503</td>
  <td class="nbHitsCovered">&nbsp;10</td>
  <td class="src"><pre class="src">&nbsp;            setMappedValue(obj, name, value);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;504</td>
  <td class="nbHitsCovered">&nbsp;143</td>
  <td class="src"><pre class="src">&nbsp;        } <span class="keyword">else</span> <span class="keyword">if</span> (getResolver().isIndexed(name)) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;505</td>
  <td class="nbHitsCovered">&nbsp;23</td>
  <td class="src"><pre class="src">&nbsp;            setIndexedValue(obj, name, value);</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;506</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        } <span class="keyword">else</span> {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;507</td>
  <td class="nbHitsCovered">&nbsp;120</td>
  <td class="src"><pre class="src">&nbsp;            setSimpleValue(obj, name, value);</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;508</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;509</td>
  <td class="nbHitsCovered">&nbsp;164</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;510</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;511</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/**</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;512</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * For setting an indexed value on an indexed object directly,</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;513</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * indexed objects are lists and arrays &lt;br/&gt;</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;514</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * NOTE: If the supplied index is invalid for the array then this will fail</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;515</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * </span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;516</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param indexedObject any array or list</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;517</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param index the index to put the value into (will append to the end of the list if index &lt; 0), must be within the bounds of the array</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;518</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param value any value, will be converted to the correct type for the array automatically</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;519</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws IllegalArgumentException if there is a failure because of an invalid index or null arguments</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;520</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws FieldSetValueException if the field is not writeable or visible</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;521</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;522</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    @SuppressWarnings(<span class="string">"unchecked"</span>)</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;523</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">public</span> <span class="keyword">void</span> setIndexedValue(Object indexedObject, <span class="keyword">int</span> index, Object value) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;524</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        <span class="keyword">if</span> (indexedObject == <span class="keyword">null</span>) {</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;525</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"Invalid indexedObject, cannot be null"</span>);</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;526</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;527</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        <span class="keyword">if</span> ( ConstructorUtils.isClassArray(indexedObject.getClass()) ) {</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;528</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            <span class="comment">// this is an array</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;529</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">try</span> {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;530</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                <span class="comment">// set the value on the array</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;531</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                <span class="comment">// NOTE: cannot automatically expand the array</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;532</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                Class&lt;?&gt; componentType = ArrayUtils.type((Object[])indexedObject);</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;533</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                Object convert = ReflectUtils.getInstance().convert(value, componentType);</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;534</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                Array.set(indexedObject, index, convert);</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;535</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            } <span class="keyword">catch</span> (Exception e) {</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;536</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"Failed to set index ("</span>+index+<span class="string">") for array of size ("</span>+Array.getLength(indexedObject)+<span class="string">") to value: "</span> + value, e);</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;537</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            }</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;538</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        } <span class="keyword">else</span> <span class="keyword">if</span> ( ConstructorUtils.isClassList(indexedObject.getClass()) ) {</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;539</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            <span class="comment">// this is a list</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;540</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            List l = (List) indexedObject;</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;541</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">try</span> {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;542</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                <span class="comment">// set value on list</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;543</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                <span class="keyword">if</span> (index &lt; 0) {</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;544</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                    l.add(value);</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;545</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                } <span class="keyword">else</span> {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;546</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                    <span class="keyword">if</span> (index &gt;= l.size()) {</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;547</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                        <span class="comment">// automatically expand the list</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;548</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                        <span class="keyword">int</span> start = l.size();</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;549</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                        <span class="keyword">for</span> (<span class="keyword">int</span> i = start; i &lt; (index+1); i++) {</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;550</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                            l.add(i, <span class="keyword">null</span>);</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;551</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                        }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;552</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                    }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;553</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                    l.set(index, value);</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;554</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;555</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            } <span class="keyword">catch</span> (Exception e) {</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;556</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                <span class="comment">// catching the general exception is correct here, translate the exception</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;557</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"Failed to set index ("</span>+index+<span class="string">") for list of size ("</span>+l.size()+<span class="string">") to value: "</span> + value, e);</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;558</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            }</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;559</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        } <span class="keyword">else</span> {</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;560</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            <span class="comment">// invalid</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;561</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"Object does not appear to be indexed (not an array or a list): "</span> </span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;562</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                    + (indexedObject == <span class="keyword">null</span> ? <span class="string">"NULL"</span> : indexedObject.getClass()) );</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;563</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;564</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;    }</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;565</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;566</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;567</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">// INTERNAL - specific methods which are not really for general use</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;568</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;569</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/**</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;570</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * Traverses the nested name path to get to the requested name and object</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;571</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param fullName the full path name (e.g. thing.field1.field2.stuff)</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;572</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param object the object to traverse</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;573</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param autoCreate if true then create the nested objects to force successful traversal, else will throw NPE</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;574</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @return a holder with the nested name (e.g. stuff) and the nested object</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;575</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws NullPointerException if the path cannot be traversed</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;576</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws IllegalArgumentException if the path is invalid</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;577</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;578</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    @SuppressWarnings(<span class="string">"unchecked"</span>)</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;579</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> Holder unpackNestedName(<span class="keyword">final</span> String fullName, <span class="keyword">final</span> Object object, <span class="keyword">boolean</span> autoCreate) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;580</td>
  <td class="nbHitsCovered">&nbsp;1325</td>
  <td class="src"><pre class="src">&nbsp;        String name = fullName;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;581</td>
  <td class="nbHitsCovered">&nbsp;1325</td>
  <td class="src"><pre class="src">&nbsp;        Object obj = object;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;582</td>
  <td class="nbHitsCovered">&nbsp;1325</td>
  <td class="src"><pre class="src">&nbsp;        Class&lt;?&gt; cls = object.getClass();</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;583</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">try</span> {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;584</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            <span class="comment">// Resolve nested references</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;585</td>
  <td class="nbHitsCovered">&nbsp;1350</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">while</span> (getResolver().hasNested(name)) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;586</td>
  <td class="nbHitsCovered">&nbsp;26</td>
  <td class="src"><pre class="src">&nbsp;                String next = getResolver().next(name);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;587</td>
  <td class="nbHitsCovered">&nbsp;26</td>
  <td class="src"><pre class="src">&nbsp;                Object nestedBean = <span class="keyword">null</span>;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;588</td>
  <td class="nbHitsCovered">&nbsp;26</td>
  <td class="src"><pre class="src">&nbsp;                <span class="keyword">if</span> (Map.<span class="keyword">class</span>.isAssignableFrom(obj.getClass())) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;589</td>
  <td class="nbHitsCovered">&nbsp;2</td>
  <td class="src"><pre class="src">&nbsp;                    nestedBean = getValueOfMap((Map) obj, next);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;590</td>
  <td class="nbHitsCovered">&nbsp;24</td>
  <td class="src"><pre class="src">&nbsp;                } <span class="keyword">else</span> <span class="keyword">if</span> (getResolver().isMapped(next)) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;591</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                    nestedBean = getMappedValue(obj, next);</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;592</td>
  <td class="nbHitsCovered">&nbsp;24</td>
  <td class="src"><pre class="src">&nbsp;                } <span class="keyword">else</span> <span class="keyword">if</span> (getResolver().isIndexed(next)) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;593</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                    nestedBean = getIndexedValue(obj, next);</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;594</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                } <span class="keyword">else</span> {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;595</td>
  <td class="nbHitsCovered">&nbsp;24</td>
  <td class="src"><pre class="src">&nbsp;                    nestedBean = getSimpleValue(obj, next);</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;596</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;597</td>
  <td class="nbHitsCovered">&nbsp;26</td>
  <td class="src"><pre class="src">&nbsp;                <span class="keyword">if</span> (nestedBean == <span class="keyword">null</span>) {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;598</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                    <span class="comment">// could not get the nested bean because it is unset</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;599</td>
  <td class="nbHitsCovered">&nbsp;6</td>
  <td class="src"><pre class="src">&nbsp;                    <span class="keyword">if</span> (autoCreate) {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;600</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                        <span class="comment">// create the nested bean</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;601</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                        <span class="keyword">try</span> {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;602</td>
  <td class="nbHitsCovered">&nbsp;5</td>
  <td class="src"><pre class="src">&nbsp;                            Class&lt;?&gt; type = getFieldType(obj, next);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;603</td>
  <td class="nbHitsCovered">&nbsp;5</td>
  <td class="src"><pre class="src">&nbsp;                            <span class="keyword">if</span> (Object.<span class="keyword">class</span>.equals(type)) {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;604</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                                <span class="comment">// indeterminate type so we will make a map</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;605</td>
  <td class="nbHitsCovered">&nbsp;1</td>
  <td class="src"><pre class="src">&nbsp;                                type = ArrayOrderedMap.<span class="keyword">class</span>;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;606</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                            }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;607</td>
  <td class="nbHitsCovered">&nbsp;5</td>
  <td class="src"><pre class="src">&nbsp;                            nestedBean = getConstructorUtils().constructClass(type);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;608</td>
  <td class="nbHitsCovered">&nbsp;5</td>
  <td class="src"><pre class="src">&nbsp;                            setFieldValue(obj, next, nestedBean, <span class="keyword">false</span>); <span class="comment">// need to put this new object into the parent</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;609</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                        } <span class="keyword">catch</span> (RuntimeException e) {</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;610</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"Nested path failure: Could not create nested object ("</span></span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;611</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                                    +cls.getName()+<span class="string">") in path ("</span>+fullName+<span class="string">"): "</span> + e.getMessage(), e);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;612</td>
  <td class="nbHitsCovered">&nbsp;5</td>
  <td class="src"><pre class="src">&nbsp;                        }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;613</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                    } <span class="keyword">else</span> {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;614</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                        <span class="comment">// no auto create so we have to fail here</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;615</td>
  <td class="nbHitsCovered">&nbsp;1</td>
  <td class="src"><pre class="src">&nbsp;                        <span class="keyword">throw</span> <span class="keyword">new</span> NullPointerException(<span class="string">"Nested traversal failure: null field value for name ("</span> </pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;616</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                                + name + <span class="string">") in nestedName ("</span>+fullName+<span class="string">") on object class ("</span> + cls + <span class="string">") for object: "</span> + obj);</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;617</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;618</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;619</td>
  <td class="nbHitsCovered">&nbsp;25</td>
  <td class="src"><pre class="src">&nbsp;                obj = nestedBean;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;620</td>
  <td class="nbHitsCovered">&nbsp;25</td>
  <td class="src"><pre class="src">&nbsp;                name = getResolver().remove(name);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;621</td>
  <td class="nbHitsCovered">&nbsp;25</td>
  <td class="src"><pre class="src">&nbsp;            }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;622</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        } <span class="keyword">catch</span> (FieldnameNotFoundException e) {</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;623</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            <span class="comment">// convert field name failure into illegal argument</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;624</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"Nested path failure: Invalid path name ("</span></span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;625</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                    +fullName+<span class="string">") contains invalid field names: "</span> + e.getMessage(), e);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;626</td>
  <td class="nbHitsCovered">&nbsp;1324</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;627</td>
  <td class="nbHitsCovered">&nbsp;1324</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> <span class="keyword">new</span> Holder(name, obj);</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;628</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;629</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;630</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/**</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;631</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * For getting a value out of a bean based on a field name</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;632</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * &lt;br/&gt;</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;633</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * &lt;b&gt;WARNING: Cannot handle a nested/mapped/indexed name&lt;/b&gt;</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;634</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws FieldnameNotFoundException if this field name is invalid for this object</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;635</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws IllegalArgumentException if there is failure</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;636</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;637</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> Object getSimpleValue(Object obj, String name) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;638</td>
  <td class="nbHitsCovered">&nbsp;1162</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (obj == <span class="keyword">null</span>) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;639</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"obj cannot be null"</span>);</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;640</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;641</td>
  <td class="nbHitsCovered">&nbsp;1162</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (name == <span class="keyword">null</span> || <span class="string">""</span>.equals(name)) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;642</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"field name cannot be null or blank"</span>);</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;643</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;644</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;645</td>
  <td class="nbHitsCovered">&nbsp;1162</td>
  <td class="src"><pre class="src">&nbsp;        Object value = <span class="keyword">null</span>;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;646</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">// Handle DynaBean instances specially</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;647</td>
  <td class="nbHitsCovered">&nbsp;1162</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (fieldAdapter.isAdaptableObject(obj)) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;648</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            value = fieldAdapter.getSimpleValue(obj, name);</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;649</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        } <span class="keyword">else</span> {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;650</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            <span class="comment">// normal bean</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;651</td>
  <td class="nbHitsCovered">&nbsp;1162</td>
  <td class="src"><pre class="src">&nbsp;            ClassFields&lt;?&gt; cf = analyzeObject(obj);</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;652</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">try</span> {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;653</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                <span class="comment">// use the class property</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;654</td>
  <td class="nbHitsCovered">&nbsp;1162</td>
  <td class="src"><pre class="src">&nbsp;                ClassProperty cp = cf.getClassProperty(name);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;655</td>
  <td class="nbHitsCovered">&nbsp;1155</td>
  <td class="src"><pre class="src">&nbsp;                value = findFieldValue(obj, cp);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;656</td>
  <td class="nbHitsCovered">&nbsp;7</td>
  <td class="src"><pre class="src">&nbsp;            } <span class="keyword">catch</span> (FieldnameNotFoundException fnfe) {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;657</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                <span class="comment">// could not find this as a standard field so handle as internal lookup</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;658</td>
  <td class="nbHitsCovered">&nbsp;7</td>
  <td class="src"><pre class="src">&nbsp;                ClassData&lt;?&gt; cd = cf.getClassData();</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;659</td>
  <td class="nbHitsCovered">&nbsp;7</td>
  <td class="src"><pre class="src">&nbsp;                Field field = getFieldIfPossible(cd, name);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;660</td>
  <td class="nbHitsCovered">&nbsp;7</td>
  <td class="src"><pre class="src">&nbsp;                <span class="keyword">if</span> (field == <span class="keyword">null</span>) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;661</td>
  <td class="nbHitsCovered">&nbsp;3</td>
  <td class="src"><pre class="src">&nbsp;                    <span class="keyword">throw</span> <span class="keyword">new</span> FieldnameNotFoundException(<span class="string">"Could not find field with name ("</span>+name+<span class="string">") on object ("</span> + obj + <span class="string">") after extended look into non-visible fields"</span>, fnfe);</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;662</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;663</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                <span class="keyword">try</span> {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;664</td>
  <td class="nbHitsCovered">&nbsp;4</td>
  <td class="src"><pre class="src">&nbsp;                    value = field.get(obj);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;665</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                } <span class="keyword">catch</span> (Exception e) {</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;666</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                    <span class="comment">// catching the general exception is correct here, translate the exception</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;667</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                    <span class="keyword">throw</span> <span class="keyword">new</span> FieldGetValueException(<span class="string">"Field get failure getting value for field ("</span>+name+<span class="string">") from non-visible field in object: "</span> + obj, name, obj, e);</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;668</td>
  <td class="nbHitsCovered">&nbsp;4</td>
  <td class="src"><pre class="src">&nbsp;                }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;669</td>
  <td class="nbHitsCovered">&nbsp;1155</td>
  <td class="src"><pre class="src">&nbsp;            }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;670</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;671</td>
  <td class="nbHitsCovered">&nbsp;1159</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> value;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;672</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;673</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;674</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/**</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;675</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * For getting an indexed value out of an object based on field name,</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;676</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * name must be like: fieldname[index],</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;677</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * If the object is an array or a list then name can be the index only:</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;678</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * "[1]" or "[0]" (brackets must be included)</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;679</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * &lt;br/&gt;</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;680</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * &lt;b&gt;WARNING: Cannot handle a nested/mapped/indexed name&lt;/b&gt;</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;681</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws FieldnameNotFoundException if this field name is invalid for this object</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;682</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws IllegalArgumentException if there is a failure</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;683</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws FieldGetValueException if there is an internal failure getting the field</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;684</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;685</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    @SuppressWarnings(<span class="string">"unchecked"</span>)</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;686</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> Object getIndexedValue(Object obj, String name) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;687</td>
  <td class="nbHitsCovered">&nbsp;22</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (obj == <span class="keyword">null</span>) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;688</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"obj cannot be null"</span>);</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;689</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;690</td>
  <td class="nbHitsCovered">&nbsp;22</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (name == <span class="keyword">null</span> || <span class="string">""</span>.equals(name)) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;691</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"field name cannot be null or blank"</span>);</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;692</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;693</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;694</td>
  <td class="nbHitsCovered">&nbsp;22</td>
  <td class="src"><pre class="src">&nbsp;        Object value = <span class="keyword">null</span>;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;695</td>
  <td class="nbHitsCovered">&nbsp;22</td>
  <td class="src"><pre class="src">&nbsp;        Resolver resolver = getResolver();</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;696</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;697</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">// get the index from the indexed name</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;698</td>
  <td class="nbHitsCovered">&nbsp;22</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">int</span> index = -1;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;699</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">try</span> {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;700</td>
  <td class="nbHitsCovered">&nbsp;22</td>
  <td class="src"><pre class="src">&nbsp;            index = resolver.getIndex(name);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;701</td>
  <td class="nbHitsCovered">&nbsp;22</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">if</span> (index &lt; 0) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;702</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"Could not find index in name ("</span> + name + <span class="string">")"</span>);</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;703</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;704</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            <span class="comment">// get the fieldname from the indexed name</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;705</td>
  <td class="nbHitsCovered">&nbsp;22</td>
  <td class="src"><pre class="src">&nbsp;            name = resolver.getProperty(name);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;706</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        } <span class="keyword">catch</span> (IllegalArgumentException e) {</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;707</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"Invalid indexed field ("</span> + name + <span class="string">") on type ("</span> + obj.getClass() + <span class="string">")"</span>, e);</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;708</td>
  <td class="nbHitsCovered">&nbsp;22</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;709</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;710</td>
  <td class="nbHitsCovered">&nbsp;22</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">boolean</span> indexedProperty = <span class="keyword">false</span>;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;711</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">// Handle DynaBean instances specially</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;712</td>
  <td class="nbHitsCovered">&nbsp;22</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (fieldAdapter.isAdaptableObject(obj)) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;713</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            value = fieldAdapter.getIndexedValue(obj, name, index);</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;714</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        } <span class="keyword">else</span> {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;715</td>
  <td class="nbHitsCovered">&nbsp;22</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">boolean</span> isArray = <span class="keyword">false</span>;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;716</td>
  <td class="nbHitsCovered">&nbsp;22</td>
  <td class="src"><pre class="src">&nbsp;            Object indexedObject = <span class="keyword">null</span>;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;717</td>
  <td class="nbHitsCovered">&nbsp;22</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">if</span> (obj.getClass().isArray()) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;718</td>
  <td class="nbHitsCovered">&nbsp;2</td>
  <td class="src"><pre class="src">&nbsp;                indexedObject = obj;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;719</td>
  <td class="nbHitsCovered">&nbsp;2</td>
  <td class="src"><pre class="src">&nbsp;                isArray = <span class="keyword">true</span>;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;720</td>
  <td class="nbHitsCovered">&nbsp;20</td>
  <td class="src"><pre class="src">&nbsp;            } <span class="keyword">else</span> <span class="keyword">if</span> (List.<span class="keyword">class</span>.isAssignableFrom(obj.getClass())) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;721</td>
  <td class="nbHitsCovered">&nbsp;2</td>
  <td class="src"><pre class="src">&nbsp;                indexedObject = obj;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;722</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            } <span class="keyword">else</span> {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;723</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                <span class="comment">// normal bean</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;724</td>
  <td class="nbHitsCovered">&nbsp;18</td>
  <td class="src"><pre class="src">&nbsp;                ClassFields cf = analyzeObject(obj);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;725</td>
  <td class="nbHitsCovered">&nbsp;18</td>
  <td class="src"><pre class="src">&nbsp;                ClassProperty cp = cf.getClassProperty(name);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;726</td>
  <td class="nbHitsCovered">&nbsp;18</td>
  <td class="src"><pre class="src">&nbsp;                <span class="keyword">if</span> (! cp.isIndexed()) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;727</td>
  <td class="nbHitsCovered">&nbsp;2</td>
  <td class="src"><pre class="src">&nbsp;                    <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"This field ("</span>+name+<span class="string">") is not an indexed field"</span>);</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;728</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;729</td>
  <td class="nbHitsCovered">&nbsp;16</td>
  <td class="src"><pre class="src">&nbsp;                isArray = cp.isArray();</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;730</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                <span class="comment">// try to get the indexed getter and use that first</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;731</td>
  <td class="nbHitsCovered">&nbsp;16</td>
  <td class="src"><pre class="src">&nbsp;                <span class="keyword">if</span> (cp <span class="keyword">instanceof</span> IndexedProperty) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;732</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                    indexedProperty = <span class="keyword">true</span>;</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;733</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                    IndexedProperty icp = (IndexedProperty) cp;</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;734</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                    <span class="keyword">try</span> {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;735</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                        Method getter = icp.getIndexGetter();</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;736</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                        value = getter.invoke(obj, <span class="keyword">new</span> Object[] {index});</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;737</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                    } <span class="keyword">catch</span> (Exception e) {</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;738</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                        <span class="comment">// catching the general exception is correct here, translate the exception</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;739</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                        <span class="keyword">throw</span> <span class="keyword">new</span> FieldGetValueException(<span class="string">"Indexed getter method failure getting indexed ("</span></span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;740</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                                +index+<span class="string">") value for name ("</span>+cp.getFieldName()+<span class="string">") from: "</span> + obj, cp.getFieldName(), obj, e);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;741</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                    }</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;742</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                } <span class="keyword">else</span> {</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;743</td>
  <td class="nbHitsCovered">&nbsp;16</td>
  <td class="src"><pre class="src">&nbsp;                    indexedObject = findFieldValue(obj, cp);</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;744</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;745</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;746</td>
  <td class="nbHitsCovered">&nbsp;20</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">if</span> (!indexedProperty) {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;747</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                <span class="comment">// now get the indexed value if possible</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;748</td>
  <td class="nbHitsCovered">&nbsp;20</td>
  <td class="src"><pre class="src">&nbsp;                <span class="keyword">if</span> (indexedObject != <span class="keyword">null</span>) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;749</td>
  <td class="nbHitsCovered">&nbsp;20</td>
  <td class="src"><pre class="src">&nbsp;                    <span class="keyword">if</span> (isArray) {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;750</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                        <span class="comment">// this is an array</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;751</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                        <span class="keyword">try</span> {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;752</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                            <span class="comment">// get value from array</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;753</td>
  <td class="nbHitsCovered">&nbsp;9</td>
  <td class="src"><pre class="src">&nbsp;                            value = Array.get(indexedObject, index);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;754</td>
  <td class="nbHitsCovered">&nbsp;2</td>
  <td class="src"><pre class="src">&nbsp;                        } <span class="keyword">catch</span> (ArrayIndexOutOfBoundsException e) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;755</td>
  <td class="nbHitsCovered">&nbsp;2</td>
  <td class="src"><pre class="src">&nbsp;                            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"Index ("</span>+index+<span class="string">") is out of bounds ("</span>+Array.getLength(indexedObject)+<span class="string">") for the array: "</span> + value, e);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;756</td>
  <td class="nbHitsCovered">&nbsp;7</td>
  <td class="src"><pre class="src">&nbsp;                        }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;757</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                    } <span class="keyword">else</span> {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;758</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                        <span class="comment">// this better be a list</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;759</td>
  <td class="nbHitsCovered">&nbsp;11</td>
  <td class="src"><pre class="src">&nbsp;                        <span class="keyword">if</span> (! List.<span class="keyword">class</span>.isAssignableFrom(indexedObject.getClass())) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;760</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"Field ("</span> + name + <span class="string">") does not appear to be indexed (not an array or a list)"</span>);</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;761</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                        } <span class="keyword">else</span> {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;762</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                            <span class="comment">// get value from list</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;763</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                            <span class="keyword">try</span> {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;764</td>
  <td class="nbHitsCovered">&nbsp;11</td>
  <td class="src"><pre class="src">&nbsp;                                value = ((List)indexedObject).get(index);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;765</td>
  <td class="nbHitsCovered">&nbsp;2</td>
  <td class="src"><pre class="src">&nbsp;                            } <span class="keyword">catch</span> (IndexOutOfBoundsException e) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;766</td>
  <td class="nbHitsCovered">&nbsp;2</td>
  <td class="src"><pre class="src">&nbsp;                                <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"Index ("</span>+index+<span class="string">") is out of bounds ("</span>+((List)indexedObject).size()+<span class="string">") for the list: "</span> + value, e);                     </pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;767</td>
  <td class="nbHitsCovered">&nbsp;9</td>
  <td class="src"><pre class="src">&nbsp;                            }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;768</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                        }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;769</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;770</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                } <span class="keyword">else</span> {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;771</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                    <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"Indexed object is null, cannot retrieve index ("</span>+index+<span class="string">") value from field ("</span>+name+<span class="string">")"</span>);</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;772</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;773</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;774</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;775</td>
  <td class="nbHitsCovered">&nbsp;16</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> value;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;776</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;777</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;778</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/**</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;779</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * For getting a mapped value out of an object based on field name,</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;780</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * name must be like: fieldname[index]</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;781</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * &lt;br/&gt;</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;782</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * &lt;b&gt;WARNING: Cannot handle a nested/mapped/indexed name&lt;/b&gt;</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;783</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws FieldnameNotFoundException if this field name is invalid for this object</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;784</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws IllegalArgumentException if there are invalid arguments</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;785</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws FieldGetValueException if there is an internal failure getting the field</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;786</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;787</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    @SuppressWarnings(<span class="string">"unchecked"</span>)</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;788</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> Object getMappedValue(Object obj, String name) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;789</td>
  <td class="nbHitsCovered">&nbsp;15</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (obj == <span class="keyword">null</span>) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;790</td>
  <td class="nbHitsCovered">&nbsp;1</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"obj cannot be null"</span>);</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;791</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;792</td>
  <td class="nbHitsCovered">&nbsp;14</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (name == <span class="keyword">null</span> || <span class="string">""</span>.equals(name)) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;793</td>
  <td class="nbHitsCovered">&nbsp;1</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"field name cannot be null or blank"</span>);</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;794</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;795</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;796</td>
  <td class="nbHitsCovered">&nbsp;13</td>
  <td class="src"><pre class="src">&nbsp;        Object value = <span class="keyword">null</span>;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;797</td>
  <td class="nbHitsCovered">&nbsp;13</td>
  <td class="src"><pre class="src">&nbsp;        Resolver resolver = getResolver();</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;798</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;799</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">// get the key from the mapped name</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;800</td>
  <td class="nbHitsCovered">&nbsp;13</td>
  <td class="src"><pre class="src">&nbsp;        String key = <span class="keyword">null</span>;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;801</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">try</span> {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;802</td>
  <td class="nbHitsCovered">&nbsp;13</td>
  <td class="src"><pre class="src">&nbsp;            key = resolver.getKey(name);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;803</td>
  <td class="nbHitsCovered">&nbsp;13</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">if</span> (key == <span class="keyword">null</span>) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;804</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"Could not find key in name ("</span> + name + <span class="string">")"</span>);</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;805</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;806</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            <span class="comment">// get the fieldname from the mapped name</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;807</td>
  <td class="nbHitsCovered">&nbsp;13</td>
  <td class="src"><pre class="src">&nbsp;            name = resolver.getProperty(name);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;808</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        } <span class="keyword">catch</span> (IllegalArgumentException e) {</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;809</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"Invalid mapped field ("</span> + name + <span class="string">") on type ("</span> + obj.getClass() + <span class="string">")"</span>, e);</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;810</td>
  <td class="nbHitsCovered">&nbsp;13</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;811</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;812</td>
  <td class="nbHitsCovered">&nbsp;13</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">boolean</span> mappedProperty = <span class="keyword">false</span>;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;813</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">// Handle DynaBean instances specially</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;814</td>
  <td class="nbHitsCovered">&nbsp;13</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (fieldAdapter.isAdaptableObject(obj)) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;815</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            value = fieldAdapter.getMappedValue(obj, name, key);</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;816</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        } <span class="keyword">else</span> {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;817</td>
  <td class="nbHitsCovered">&nbsp;13</td>
  <td class="src"><pre class="src">&nbsp;            Map map = <span class="keyword">null</span>;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;818</td>
  <td class="nbHitsCovered">&nbsp;13</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">if</span> (Map.<span class="keyword">class</span>.isAssignableFrom(obj.getClass())) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;819</td>
  <td class="nbHitsCovered">&nbsp;2</td>
  <td class="src"><pre class="src">&nbsp;                map = (Map) obj;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;820</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            } <span class="keyword">else</span> {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;821</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                <span class="comment">// normal bean</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;822</td>
  <td class="nbHitsCovered">&nbsp;11</td>
  <td class="src"><pre class="src">&nbsp;                ClassFields cf = analyzeObject(obj);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;823</td>
  <td class="nbHitsCovered">&nbsp;11</td>
  <td class="src"><pre class="src">&nbsp;                ClassProperty cp = cf.getClassProperty(name);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;824</td>
  <td class="nbHitsCovered">&nbsp;11</td>
  <td class="src"><pre class="src">&nbsp;                <span class="keyword">if</span> (! cp.isMapped()) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;825</td>
  <td class="nbHitsCovered">&nbsp;2</td>
  <td class="src"><pre class="src">&nbsp;                    <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"This field ("</span>+name+<span class="string">") is not an mapped field"</span>);</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;826</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;827</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                <span class="comment">// try to get the mapped getter and use that first</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;828</td>
  <td class="nbHitsCovered">&nbsp;9</td>
  <td class="src"><pre class="src">&nbsp;                <span class="keyword">if</span> (cp <span class="keyword">instanceof</span> MappedProperty) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;829</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                    mappedProperty = <span class="keyword">true</span>;</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;830</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                    MappedProperty mcp = (MappedProperty) cp;</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;831</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                    <span class="keyword">try</span> {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;832</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                        Method getter = mcp.getMapGetter();</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;833</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                        value = getter.invoke(obj, <span class="keyword">new</span> Object[] {key});</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;834</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                    } <span class="keyword">catch</span> (Exception e) {</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;835</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                        <span class="comment">// catching the general exception is correct here, translate the exception</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;836</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                        <span class="keyword">throw</span> <span class="keyword">new</span> FieldGetValueException(<span class="string">"Mapped getter method failure getting mapped ("</span></span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;837</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                                +key+<span class="string">") value for name ("</span>+cp.getFieldName()+<span class="string">") from: "</span> + obj, cp.getFieldName(), obj, e);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;838</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                    }</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;839</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                } <span class="keyword">else</span> {</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;840</td>
  <td class="nbHitsCovered">&nbsp;9</td>
  <td class="src"><pre class="src">&nbsp;                    Object o = findFieldValue(obj, cp);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;841</td>
  <td class="nbHitsCovered">&nbsp;9</td>
  <td class="src"><pre class="src">&nbsp;                    <span class="keyword">if</span> (! Map.<span class="keyword">class</span>.isAssignableFrom(o.getClass())) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;842</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                        <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"Field ("</span> + name + <span class="string">") does not appear to be a map (not instance of Map)"</span>);</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;843</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                    }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;844</td>
  <td class="nbHitsCovered">&nbsp;9</td>
  <td class="src"><pre class="src">&nbsp;                    map = (Map) o;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;845</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;846</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;847</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            <span class="comment">// get the value from the map</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;848</td>
  <td class="nbHitsCovered">&nbsp;11</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">if</span> (!mappedProperty) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;849</td>
  <td class="nbHitsCovered">&nbsp;11</td>
  <td class="src"><pre class="src">&nbsp;                <span class="keyword">if</span> (map != <span class="keyword">null</span>) {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;850</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                    <span class="keyword">try</span> {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;851</td>
  <td class="nbHitsCovered">&nbsp;11</td>
  <td class="src"><pre class="src">&nbsp;                        value = map.get(key);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;852</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                    } <span class="keyword">catch</span> (Exception e) {</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;853</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                        <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"Key ("</span>+key+<span class="string">") is invalid ("</span>+map.size()+<span class="string">") for the map: "</span> + map, e);</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;854</td>
  <td class="nbHitsCovered">&nbsp;11</td>
  <td class="src"><pre class="src">&nbsp;                    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;855</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                } <span class="keyword">else</span> {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;856</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                    <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"Mapped object is null, cannot retrieve key ("</span>+key+<span class="string">") value from field ("</span>+name+<span class="string">")"</span>);</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;857</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;858</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;859</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;860</td>
  <td class="nbHitsCovered">&nbsp;11</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> value;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;861</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;862</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;863</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/**</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;864</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * For getting a value out of a map based on a field name which has a key in it,</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;865</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * name is expected to be the key for the map only: e.g. "mykey",</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;866</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * if it happens to be of the form: thing[mykey] then the key will be extracted</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;867</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * &lt;br/&gt;</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;868</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * &lt;b&gt;WARNING: Cannot handle a nested name or mapped/indexed key&lt;/b&gt;</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;869</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @return the value in the map with a key matching this name OR null if no key found</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;870</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;871</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    @SuppressWarnings(<span class="string">"unchecked"</span>)</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;872</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> Object getValueOfMap(Map map, String name) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;873</td>
  <td class="nbHitsCovered">&nbsp;9</td>
  <td class="src"><pre class="src">&nbsp;        Resolver resolver = getResolver();</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;874</td>
  <td class="nbHitsCovered">&nbsp;9</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (resolver.isMapped(name)) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;875</td>
  <td class="nbHitsCovered">&nbsp;2</td>
  <td class="src"><pre class="src">&nbsp;            String propName = resolver.getProperty(name);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;876</td>
  <td class="nbHitsCovered">&nbsp;2</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">if</span> (propName == <span class="keyword">null</span> || propName.length() == 0) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;877</td>
  <td class="nbHitsCovered">&nbsp;2</td>
  <td class="src"><pre class="src">&nbsp;                name = resolver.getKey(name);</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;878</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;879</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;880</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;881</td>
  <td class="nbHitsCovered">&nbsp;9</td>
  <td class="src"><pre class="src">&nbsp;        Object value = map.get(name);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;882</td>
  <td class="nbHitsCovered">&nbsp;9</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> value;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;883</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;884</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;885</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/**</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;886</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * This will get the value from a field,</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;887</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * for internal use only,</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;888</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * Reduce code duplication</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;889</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param obj any object</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;890</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param cp the analysis object which must match the given object (defines the field)</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;891</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @return the value for the field</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;892</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws IllegalArgumentException if inputs are invalid (null)</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;893</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws FieldGetValueException if there is an internal failure getting the field</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;894</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;895</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> Object findFieldValue(Object obj, ClassProperty cp) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;896</td>
  <td class="nbHitsCovered">&nbsp;1233</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (obj == <span class="keyword">null</span>) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;897</td>
  <td class="nbHitsCovered">&nbsp;1</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"Object cannot be null"</span>);</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;898</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;899</td>
  <td class="nbHitsCovered">&nbsp;1232</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (cp == <span class="keyword">null</span>) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;900</td>
  <td class="nbHitsCovered">&nbsp;1</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"ClassProperty cannot be null"</span>);</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;901</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;902</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;903</td>
  <td class="nbHitsCovered">&nbsp;1231</td>
  <td class="src"><pre class="src">&nbsp;        Object value = <span class="keyword">null</span>;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;904</td>
  <td class="nbHitsCovered">&nbsp;1231</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (cp.isPublicField()) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;905</td>
  <td class="nbHitsCovered">&nbsp;532</td>
  <td class="src"><pre class="src">&nbsp;            Field field = cp.getField();</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;906</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">try</span> {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;907</td>
  <td class="nbHitsCovered">&nbsp;532</td>
  <td class="src"><pre class="src">&nbsp;                value = field.get(obj);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;908</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            } <span class="keyword">catch</span> (Exception e) {</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;909</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                <span class="comment">// catching the general exception is correct here, translate the exception</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;910</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                <span class="keyword">throw</span> <span class="keyword">new</span> FieldGetValueException(<span class="string">"Field get failure getting value for name ("</span>+cp.getFieldName()+<span class="string">") from: "</span> + obj, cp.getFieldName(), obj, e);</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;911</td>
  <td class="nbHitsCovered">&nbsp;532</td>
  <td class="src"><pre class="src">&nbsp;            }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;912</td>
  <td class="nbHitsCovered">&nbsp;532</td>
  <td class="src"><pre class="src">&nbsp;        } <span class="keyword">else</span> {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;913</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            <span class="comment">// must be a property then</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;914</td>
  <td class="nbHitsCovered">&nbsp;699</td>
  <td class="src"><pre class="src">&nbsp;            Method getter = cp.getGetter();</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;915</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">try</span> {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;916</td>
  <td class="nbHitsCovered">&nbsp;699</td>
  <td class="src"><pre class="src">&nbsp;                value = getter.invoke(obj, <span class="keyword">new</span> Object[0]);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;917</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            } <span class="keyword">catch</span> (Exception e) {</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;918</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                <span class="comment">// catching the general exception is correct here, translate the exception</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;919</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                <span class="keyword">throw</span> <span class="keyword">new</span> FieldGetValueException(<span class="string">"Getter method failure getting value for name ("</span>+cp.getFieldName()+<span class="string">") from: "</span> + obj, cp.getFieldName(), obj, e);</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;920</td>
  <td class="nbHitsCovered">&nbsp;699</td>
  <td class="src"><pre class="src">&nbsp;            }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;921</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;922</td>
  <td class="nbHitsCovered">&nbsp;1231</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> value;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;923</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;924</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;925</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;926</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/**</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;927</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * Set a value on a field of an object, the types must match and the name must be identical</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;928</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * &lt;br/&gt;</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;929</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * &lt;b&gt;WARNING: Cannot handle a nested/mapped/indexed name&lt;/b&gt;</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;930</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws FieldnameNotFoundException if this field name is invalid for this object</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;931</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws IllegalArgumentException if there is failure</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;932</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws FieldSetValueException if there is an internal failure setting the field</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;933</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;934</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">void</span> setSimpleValue(Object obj, String name, Object value) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;935</td>
  <td class="nbHitsCovered">&nbsp;141</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (obj == <span class="keyword">null</span>) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;936</td>
  <td class="nbHitsCovered">&nbsp;1</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"obj cannot be null"</span>);</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;937</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;938</td>
  <td class="nbHitsCovered">&nbsp;140</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (name == <span class="keyword">null</span> || <span class="string">""</span>.equals(name)) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;939</td>
  <td class="nbHitsCovered">&nbsp;1</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"field name cannot be null or blank"</span>);</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;940</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;941</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;942</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">// Handle DynaBean instances specially</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;943</td>
  <td class="nbHitsCovered">&nbsp;139</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (fieldAdapter.isAdaptableObject(obj)) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;944</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            fieldAdapter.setSimpleValue(obj, name, value);</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;945</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        } <span class="keyword">else</span> {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;946</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            <span class="comment">// normal bean</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;947</td>
  <td class="nbHitsCovered">&nbsp;139</td>
  <td class="src"><pre class="src">&nbsp;            ClassFields&lt;?&gt; cf = analyzeObject(obj);</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;948</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">try</span> {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;949</td>
  <td class="nbHitsCovered">&nbsp;139</td>
  <td class="src"><pre class="src">&nbsp;                ClassProperty cp = cf.getClassProperty(name);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;950</td>
  <td class="nbHitsCovered">&nbsp;136</td>
  <td class="src"><pre class="src">&nbsp;                assignFieldValue(obj, cp, value);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;951</td>
  <td class="nbHitsCovered">&nbsp;3</td>
  <td class="src"><pre class="src">&nbsp;            } <span class="keyword">catch</span> (FieldnameNotFoundException fnfe) {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;952</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                <span class="comment">// could not find this as a standard field so handle as internal lookup</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;953</td>
  <td class="nbHitsCovered">&nbsp;3</td>
  <td class="src"><pre class="src">&nbsp;                ClassData&lt;?&gt; cd = cf.getClassData();</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;954</td>
  <td class="nbHitsCovered">&nbsp;3</td>
  <td class="src"><pre class="src">&nbsp;                Field field = getFieldIfPossible(cd, name);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;955</td>
  <td class="nbHitsCovered">&nbsp;3</td>
  <td class="src"><pre class="src">&nbsp;                <span class="keyword">if</span> (field == <span class="keyword">null</span>) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;956</td>
  <td class="nbHitsCovered">&nbsp;1</td>
  <td class="src"><pre class="src">&nbsp;                    <span class="keyword">throw</span> <span class="keyword">new</span> FieldnameNotFoundException(<span class="string">"Could not find field with name ("</span>+name+<span class="string">") on object ("</span> + obj + <span class="string">") after extended look into non-visible fields"</span>, fnfe);</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;957</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;958</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                <span class="keyword">try</span> {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;959</td>
  <td class="nbHitsCovered">&nbsp;2</td>
  <td class="src"><pre class="src">&nbsp;                    value = getConversionUtils().convert(value, field.getType());</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;960</td>
  <td class="nbHitsCovered">&nbsp;2</td>
  <td class="src"><pre class="src">&nbsp;                    field.set(obj, value);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;961</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                } <span class="keyword">catch</span> (Exception e) {</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;962</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                    <span class="comment">// catching the general exception is correct here, translate the exception</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;963</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                    <span class="keyword">throw</span> <span class="keyword">new</span> FieldSetValueException(<span class="string">"Field set failure setting value ("</span>+value+<span class="string">") for field ("</span>+name+<span class="string">") from non-visible field in object: "</span> + obj, name, obj, e);</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;964</td>
  <td class="nbHitsCovered">&nbsp;2</td>
  <td class="src"><pre class="src">&nbsp;                }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;965</td>
  <td class="nbHitsCovered">&nbsp;132</td>
  <td class="src"><pre class="src">&nbsp;            }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;966</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;967</td>
  <td class="nbHitsCovered">&nbsp;134</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;968</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;969</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/**</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;970</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * For setting an indexed value on an object based on field name,</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;971</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * name must be like: fieldname[index]</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;972</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * &lt;br/&gt;</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;973</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * &lt;b&gt;WARNING: Cannot handle a nested/mapped/indexed name&lt;/b&gt;</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;974</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws FieldnameNotFoundException if this field name is invalid for this object</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;975</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws IllegalArgumentException if there is a failure</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;976</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws FieldSetValueException if there is an internal failure setting the field</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;977</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;978</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    @SuppressWarnings(<span class="string">"unchecked"</span>)</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;979</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">void</span> setIndexedValue(Object obj, String name, Object value) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;980</td>
  <td class="nbHitsCovered">&nbsp;35</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (obj == <span class="keyword">null</span>) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;981</td>
  <td class="nbHitsCovered">&nbsp;1</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"obj cannot be null"</span>);</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;982</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;983</td>
  <td class="nbHitsCovered">&nbsp;34</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (name == <span class="keyword">null</span> || <span class="string">""</span>.equals(name)) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;984</td>
  <td class="nbHitsCovered">&nbsp;1</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"field name cannot be null or blank"</span>);</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;985</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;986</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;987</td>
  <td class="nbHitsCovered">&nbsp;33</td>
  <td class="src"><pre class="src">&nbsp;        Resolver resolver = getResolver();</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;988</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">// get the index from the indexed name</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;989</td>
  <td class="nbHitsCovered">&nbsp;33</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">int</span> index = -1;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;990</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">try</span> {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;991</td>
  <td class="nbHitsCovered">&nbsp;33</td>
  <td class="src"><pre class="src">&nbsp;            index = resolver.getIndex(name);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;992</td>
  <td class="nbHitsCovered">&nbsp;33</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">if</span> (index &lt; 0) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;993</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"Could not find index in name ("</span> + name + <span class="string">")"</span>);</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;994</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;995</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            <span class="comment">// get the fieldname from the indexed name</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;996</td>
  <td class="nbHitsCovered">&nbsp;33</td>
  <td class="src"><pre class="src">&nbsp;            name = resolver.getProperty(name);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;997</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        } <span class="keyword">catch</span> (IllegalArgumentException e) {</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;998</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"Invalid indexed field ("</span> + name + <span class="string">") on type ("</span> + obj.getClass() + <span class="string">")"</span>, e);</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;999</td>
  <td class="nbHitsCovered">&nbsp;33</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1000</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1001</td>
  <td class="nbHitsCovered">&nbsp;33</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">boolean</span> indexedProperty = <span class="keyword">false</span>;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1002</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">// Handle DynaBean instances specially</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1003</td>
  <td class="nbHitsCovered">&nbsp;33</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (fieldAdapter.isAdaptableObject(obj)) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1004</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            fieldAdapter.setIndexedValue(obj, name, index, value);</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1005</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        } <span class="keyword">else</span> {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1006</td>
  <td class="nbHitsCovered">&nbsp;33</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">boolean</span> isArray = <span class="keyword">false</span>;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1007</td>
  <td class="nbHitsCovered">&nbsp;33</td>
  <td class="src"><pre class="src">&nbsp;            Object indexedObject = <span class="keyword">null</span>;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1008</td>
  <td class="nbHitsCovered">&nbsp;33</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">if</span> ( ConstructorUtils.isClassArray(obj.getClass()) ) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1009</td>
  <td class="nbHitsCovered">&nbsp;1</td>
  <td class="src"><pre class="src">&nbsp;                indexedObject = obj;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1010</td>
  <td class="nbHitsCovered">&nbsp;1</td>
  <td class="src"><pre class="src">&nbsp;                isArray = <span class="keyword">true</span>;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1011</td>
  <td class="nbHitsCovered">&nbsp;32</td>
  <td class="src"><pre class="src">&nbsp;            } <span class="keyword">else</span> <span class="keyword">if</span> ( ConstructorUtils.isClassList(obj.getClass()) ) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1012</td>
  <td class="nbHitsCovered">&nbsp;1</td>
  <td class="src"><pre class="src">&nbsp;                indexedObject = obj;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1013</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            } <span class="keyword">else</span> {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1014</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                <span class="comment">// normal bean</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1015</td>
  <td class="nbHitsCovered">&nbsp;31</td>
  <td class="src"><pre class="src">&nbsp;                ClassFields cf = analyzeObject(obj);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1016</td>
  <td class="nbHitsCovered">&nbsp;31</td>
  <td class="src"><pre class="src">&nbsp;                ClassProperty cp = cf.getClassProperty(name);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1017</td>
  <td class="nbHitsCovered">&nbsp;31</td>
  <td class="src"><pre class="src">&nbsp;                <span class="keyword">if</span> (! cp.isIndexed()) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1018</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                    <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"This field ("</span>+name+<span class="string">") is not an indexed field"</span>);</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1019</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1020</td>
  <td class="nbHitsCovered">&nbsp;31</td>
  <td class="src"><pre class="src">&nbsp;                isArray = cp.isArray();</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1021</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                <span class="comment">// try to get the indexed setter and use that first</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1022</td>
  <td class="nbHitsCovered">&nbsp;31</td>
  <td class="src"><pre class="src">&nbsp;                <span class="keyword">if</span> (cp <span class="keyword">instanceof</span> IndexedProperty) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1023</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                    indexedProperty = <span class="keyword">true</span>;</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1024</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                    IndexedProperty icp = (IndexedProperty) cp;</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1025</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                    <span class="keyword">try</span> {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1026</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                        Method setter = icp.getIndexSetter();</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1027</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                        setter.invoke(obj, <span class="keyword">new</span> Object[] {index, value});</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1028</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                    } <span class="keyword">catch</span> (Exception e) {</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1029</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                        <span class="comment">// catching the general exception is correct here, translate the exception</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1030</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                        <span class="keyword">throw</span> <span class="keyword">new</span> FieldSetValueException(<span class="string">"Indexed setter method failure setting indexed ("</span></span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1031</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                                +index+<span class="string">") value for name ("</span>+cp.getFieldName()+<span class="string">") on: "</span> + obj, cp.getFieldName(), obj, e);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1032</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                    }</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1033</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                } <span class="keyword">else</span> {</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1034</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                    <span class="comment">// get the field value out and work with it directly</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1035</td>
  <td class="nbHitsCovered">&nbsp;31</td>
  <td class="src"><pre class="src">&nbsp;                    indexedObject = findFieldValue(obj, cp);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1036</td>
  <td class="nbHitsCovered">&nbsp;31</td>
  <td class="src"><pre class="src">&nbsp;                    <span class="keyword">if</span> (indexedObject == <span class="keyword">null</span>) {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1037</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                        <span class="comment">// handle nulls by creating if possible</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1038</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                        <span class="keyword">try</span> {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1039</td>
  <td class="nbHitsCovered">&nbsp;6</td>
  <td class="src"><pre class="src">&nbsp;                            <span class="keyword">if</span> (isArray) {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1040</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                                <span class="comment">// create the array if it is null</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1041</td>
  <td class="nbHitsCovered">&nbsp;3</td>
  <td class="src"><pre class="src">&nbsp;                                Class&lt;?&gt; type = value.getClass();</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1042</td>
  <td class="nbHitsCovered">&nbsp;3</td>
  <td class="src"><pre class="src">&nbsp;                                indexedObject = ArrayUtils.create(type, index+1);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1043</td>
  <td class="nbHitsCovered">&nbsp;3</td>
  <td class="src"><pre class="src">&nbsp;                            } <span class="keyword">else</span> { <span class="comment">// List</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1044</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                                <span class="comment">// create the list if it is null, back-fill it, and assign it back to the object</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1045</td>
  <td class="nbHitsCovered">&nbsp;3</td>
  <td class="src"><pre class="src">&nbsp;                                Class&lt;?&gt; type = cp.getType();</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1046</td>
  <td class="nbHitsCovered">&nbsp;3</td>
  <td class="src"><pre class="src">&nbsp;                                <span class="keyword">if</span> (type.isInterface()) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1047</td>
  <td class="nbHitsCovered">&nbsp;3</td>
  <td class="src"><pre class="src">&nbsp;                                    indexedObject = <span class="keyword">new</span> ArrayList(index+1);</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1048</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                                } <span class="keyword">else</span> {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1049</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                                    indexedObject = type.newInstance();</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1050</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                                }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1051</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                            }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1052</td>
  <td class="nbHitsCovered">&nbsp;6</td>
  <td class="src"><pre class="src">&nbsp;                            setSimpleValue(obj, name, indexedObject);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1053</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                        } <span class="keyword">catch</span> (Exception e) {</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1054</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"Indexed object is null, attempt to create list failed, cannot set value for index ("</span>+index+<span class="string">") on field ("</span>+name+<span class="string">")"</span>, e);</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1055</td>
  <td class="nbHitsCovered">&nbsp;6</td>
  <td class="src"><pre class="src">&nbsp;                        }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1056</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1057</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1058</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1059</td>
  <td class="nbHitsCovered">&nbsp;33</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">if</span> (!indexedProperty) {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1060</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                <span class="comment">// set the indexed value</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1061</td>
  <td class="nbHitsCovered">&nbsp;33</td>
  <td class="src"><pre class="src">&nbsp;                <span class="keyword">if</span> (isArray) {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1062</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                    <span class="comment">// this is an array</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1063</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                    <span class="keyword">try</span> {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1064</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                        <span class="comment">// set the value on the array</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1065</td>
  <td class="nbHitsCovered">&nbsp;16</td>
  <td class="src"><pre class="src">&nbsp;                        <span class="keyword">int</span> length = ArrayUtils.size((Object[])indexedObject);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1066</td>
  <td class="nbHitsCovered">&nbsp;16</td>
  <td class="src"><pre class="src">&nbsp;                        <span class="keyword">if</span> (index &gt;= length) {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1067</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                            <span class="comment">// automatically expand the array</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1068</td>
  <td class="nbHitsCovered">&nbsp;4</td>
  <td class="src"><pre class="src">&nbsp;                            indexedObject = ArrayUtils.resize((Object[])indexedObject, index+1);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1069</td>
  <td class="nbHitsCovered">&nbsp;4</td>
  <td class="src"><pre class="src">&nbsp;                            setSimpleValue(obj, name, indexedObject); <span class="comment">// need to put the array back into the object</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1070</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                        }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1071</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                        <span class="comment">// convert this value to the type for the array</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1072</td>
  <td class="nbHitsCovered">&nbsp;16</td>
  <td class="src"><pre class="src">&nbsp;                        Class&lt;?&gt; componentType = ArrayUtils.type((Object[])indexedObject);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1073</td>
  <td class="nbHitsCovered">&nbsp;16</td>
  <td class="src"><pre class="src">&nbsp;                        Object convert = ReflectUtils.getInstance().convert(value, componentType);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1074</td>
  <td class="nbHitsCovered">&nbsp;16</td>
  <td class="src"><pre class="src">&nbsp;                        Array.set(indexedObject, index, convert);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1075</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                    } <span class="keyword">catch</span> (Exception e) {</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1076</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                        <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"Failed to set index ("</span>+index+<span class="string">") for array of size ("</span>+Array.getLength(indexedObject)+<span class="string">") to value: "</span> + value, e);</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1077</td>
  <td class="nbHitsCovered">&nbsp;16</td>
  <td class="src"><pre class="src">&nbsp;                    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1078</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                } <span class="keyword">else</span> {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1079</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                    <span class="comment">// this better be a list</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1080</td>
  <td class="nbHitsCovered">&nbsp;17</td>
  <td class="src"><pre class="src">&nbsp;                    <span class="keyword">if</span> (indexedObject == <span class="keyword">null</span> </pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1081</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                            || ! List.<span class="keyword">class</span>.isAssignableFrom(indexedObject.getClass())) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1082</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                        <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"Field ("</span> + name + <span class="string">") does not appear to be indexed (not an array or a list): "</span> </span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1083</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                                + (indexedObject == <span class="keyword">null</span> ? <span class="string">"NULL"</span> : indexedObject.getClass()) );</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1084</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                    } <span class="keyword">else</span> {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1085</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                        <span class="comment">// this is a list</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1086</td>
  <td class="nbHitsCovered">&nbsp;17</td>
  <td class="src"><pre class="src">&nbsp;                        List l = (List) indexedObject;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1087</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                        <span class="keyword">try</span> {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1088</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                            <span class="comment">// set value on list</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1089</td>
  <td class="nbHitsCovered">&nbsp;17</td>
  <td class="src"><pre class="src">&nbsp;                            <span class="keyword">if</span> (index &lt; 0) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1090</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                                l.add(value);</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1091</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                            } <span class="keyword">else</span> {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1092</td>
  <td class="nbHitsCovered">&nbsp;17</td>
  <td class="src"><pre class="src">&nbsp;                                <span class="keyword">if</span> (index &gt;= l.size()) {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1093</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                                    <span class="comment">// automatically expand the list</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1094</td>
  <td class="nbHitsCovered">&nbsp;10</td>
  <td class="src"><pre class="src">&nbsp;                                    <span class="keyword">int</span> start = l.size();</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1095</td>
  <td class="nbHitsCovered">&nbsp;222</td>
  <td class="src"><pre class="src">&nbsp;                                    <span class="keyword">for</span> (<span class="keyword">int</span> i = start; i &lt; (index+1); i++) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1096</td>
  <td class="nbHitsCovered">&nbsp;212</td>
  <td class="src"><pre class="src">&nbsp;                                        l.add(i, <span class="keyword">null</span>);</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1097</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                                    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1098</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                                }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1099</td>
  <td class="nbHitsCovered">&nbsp;17</td>
  <td class="src"><pre class="src">&nbsp;                                l.set(index, value);</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1100</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                            }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1101</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                        } <span class="keyword">catch</span> (Exception e) {</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1102</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                            <span class="comment">// catching the general exception is correct here, translate the exception</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1103</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"Failed to set index ("</span>+index+<span class="string">") for list of size ("</span>+l.size()+<span class="string">") to value: "</span> + value, e);</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1104</td>
  <td class="nbHitsCovered">&nbsp;17</td>
  <td class="src"><pre class="src">&nbsp;                        }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1105</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1106</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1107</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1108</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1109</td>
  <td class="nbHitsCovered">&nbsp;33</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1110</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1111</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/**</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1112</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * For getting a mapped value out of an object based on field name,</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1113</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * name must be like: fieldname[index]</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1114</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * &lt;br/&gt;</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1115</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * &lt;b&gt;WARNING: Cannot handle a nested/mapped/indexed name&lt;/b&gt;</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1116</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws FieldnameNotFoundException if this field name is invalid for this object</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1117</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws IllegalArgumentException if there is failure</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1118</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws FieldSetValueException if there is an internal failure setting the field</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1119</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1120</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    @SuppressWarnings(<span class="string">"unchecked"</span>)</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1121</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">void</span> setMappedValue(Object obj, String name, Object value) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1122</td>
  <td class="nbHitsCovered">&nbsp;18</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (obj == <span class="keyword">null</span>) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1123</td>
  <td class="nbHitsCovered">&nbsp;2</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"obj cannot be null"</span>);</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1124</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1125</td>
  <td class="nbHitsCovered">&nbsp;16</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (name == <span class="keyword">null</span> || <span class="string">""</span>.equals(name)) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1126</td>
  <td class="nbHitsCovered">&nbsp;1</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"field name cannot be null or blank"</span>);</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1127</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1128</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1129</td>
  <td class="nbHitsCovered">&nbsp;15</td>
  <td class="src"><pre class="src">&nbsp;        Resolver resolver = getResolver();</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1130</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">// get the key from the mapped name</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1131</td>
  <td class="nbHitsCovered">&nbsp;15</td>
  <td class="src"><pre class="src">&nbsp;        String key = <span class="keyword">null</span>;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1132</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">try</span> {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1133</td>
  <td class="nbHitsCovered">&nbsp;15</td>
  <td class="src"><pre class="src">&nbsp;            key = resolver.getKey(name);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1134</td>
  <td class="nbHitsCovered">&nbsp;15</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">if</span> (key == <span class="keyword">null</span>) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1135</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"Could not find key in name ("</span> + name + <span class="string">")"</span>);</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1136</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1137</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            <span class="comment">// get the fieldname from the mapped name</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1138</td>
  <td class="nbHitsCovered">&nbsp;15</td>
  <td class="src"><pre class="src">&nbsp;            name = resolver.getProperty(name);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1139</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        } <span class="keyword">catch</span> (IllegalArgumentException e) {</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1140</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"Invalid mapped field ("</span> + name + <span class="string">") on type ("</span> + obj.getClass() + <span class="string">")"</span>, e);</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1141</td>
  <td class="nbHitsCovered">&nbsp;15</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1142</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1143</td>
  <td class="nbHitsCovered">&nbsp;15</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">boolean</span> mappedProperty = <span class="keyword">false</span>;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1144</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">// Handle DynaBean instances specially</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1145</td>
  <td class="nbHitsCovered">&nbsp;15</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (fieldAdapter.isAdaptableObject(obj)) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1146</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            fieldAdapter.setMappedValue(obj, name, key, value);</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1147</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        } <span class="keyword">else</span> {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1148</td>
  <td class="nbHitsCovered">&nbsp;15</td>
  <td class="src"><pre class="src">&nbsp;            Map map = <span class="keyword">null</span>;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1149</td>
  <td class="nbHitsCovered">&nbsp;15</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">if</span> (Map.<span class="keyword">class</span>.isAssignableFrom(obj.getClass())) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1150</td>
  <td class="nbHitsCovered">&nbsp;2</td>
  <td class="src"><pre class="src">&nbsp;                map = (Map) obj;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1151</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            } <span class="keyword">else</span> {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1152</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                <span class="comment">// normal bean</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1153</td>
  <td class="nbHitsCovered">&nbsp;13</td>
  <td class="src"><pre class="src">&nbsp;                ClassFields cf = analyzeObject(obj);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1154</td>
  <td class="nbHitsCovered">&nbsp;13</td>
  <td class="src"><pre class="src">&nbsp;                ClassProperty cp = cf.getClassProperty(name);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1155</td>
  <td class="nbHitsCovered">&nbsp;13</td>
  <td class="src"><pre class="src">&nbsp;                <span class="keyword">if</span> (! cp.isMapped()) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1156</td>
  <td class="nbHitsCovered">&nbsp;2</td>
  <td class="src"><pre class="src">&nbsp;                    <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"This field ("</span>+name+<span class="string">") is not an mapped field"</span>);</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1157</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1158</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                <span class="comment">// try to get the mapped setter and use that first</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1159</td>
  <td class="nbHitsCovered">&nbsp;11</td>
  <td class="src"><pre class="src">&nbsp;                <span class="keyword">if</span> (cp <span class="keyword">instanceof</span> MappedProperty) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1160</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                    mappedProperty = <span class="keyword">true</span>;</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1161</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                    MappedProperty mcp = (MappedProperty) cp;</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1162</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                    <span class="keyword">try</span> {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1163</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                        Method setter = mcp.getMapSetter();</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1164</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                        value = setter.invoke(obj, <span class="keyword">new</span> Object[] {key, value});</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1165</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                    } <span class="keyword">catch</span> (Exception e) {</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1166</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                        <span class="comment">// catching the general exception is correct here, translate the exception</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1167</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                        <span class="keyword">throw</span> <span class="keyword">new</span> FieldSetValueException(<span class="string">"Mapped setter method failure setting mapped ("</span></span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1168</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                                +key+<span class="string">") value for name ("</span>+cp.getFieldName()+<span class="string">") on: "</span> + obj, cp.getFieldName(), obj, e);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1169</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                    }</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1170</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                } <span class="keyword">else</span> {</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1171</td>
  <td class="nbHitsCovered">&nbsp;11</td>
  <td class="src"><pre class="src">&nbsp;                    Object o = findFieldValue(obj, cp);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1172</td>
  <td class="nbHitsCovered">&nbsp;11</td>
  <td class="src"><pre class="src">&nbsp;                    <span class="keyword">if</span> (o == <span class="keyword">null</span>) {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1173</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                        <span class="comment">// create the map if it is null and assign it back to the object</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1174</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                        <span class="keyword">try</span> {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1175</td>
  <td class="nbHitsCovered">&nbsp;3</td>
  <td class="src"><pre class="src">&nbsp;                            Class&lt;?&gt; type = cp.getType();</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1176</td>
  <td class="nbHitsCovered">&nbsp;3</td>
  <td class="src"><pre class="src">&nbsp;                            <span class="keyword">if</span> (type.isInterface()) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1177</td>
  <td class="nbHitsCovered">&nbsp;3</td>
  <td class="src"><pre class="src">&nbsp;                                map = <span class="keyword">new</span> ArrayOrderedMap(5);</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1178</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                            } <span class="keyword">else</span> {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1179</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                                map = (Map) type.newInstance();</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1180</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                            }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1181</td>
  <td class="nbHitsCovered">&nbsp;3</td>
  <td class="src"><pre class="src">&nbsp;                            setSimpleValue(obj, name, map);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1182</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                        } <span class="keyword">catch</span> (Exception e) {</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1183</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                            <span class="comment">// catching the general exception is correct here, translate the exception</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1184</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"Mapped object is null, attempt to create map failed, cannot set value for key ("</span>+key+<span class="string">") on field ("</span>+name+<span class="string">")"</span>, e);</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1185</td>
  <td class="nbHitsCovered">&nbsp;3</td>
  <td class="src"><pre class="src">&nbsp;                        }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1186</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                    } <span class="keyword">else</span> {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1187</td>
  <td class="nbHitsCovered">&nbsp;8</td>
  <td class="src"><pre class="src">&nbsp;                        <span class="keyword">if</span> (! Map.<span class="keyword">class</span>.isAssignableFrom(o.getClass())) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1188</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"Field ("</span> + name + <span class="string">") does not appear to be a map (not instance of Map)"</span>);</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1189</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                        }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1190</td>
  <td class="nbHitsCovered">&nbsp;8</td>
  <td class="src"><pre class="src">&nbsp;                        map = (Map) o;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1191</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1192</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1193</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1194</td>
  <td class="nbHitsCovered">&nbsp;13</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">if</span> (!mappedProperty) {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1195</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                <span class="comment">// set value in map</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1196</td>
  <td class="nbHitsCovered">&nbsp;13</td>
  <td class="src"><pre class="src">&nbsp;                <span class="keyword">if</span> (map == <span class="keyword">null</span>) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1197</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                    <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"Mapped object is null, cannot set value for key ("</span>+key+<span class="string">") on field ("</span>+name+<span class="string">")"</span>);</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1198</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1199</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                <span class="comment">// set value on map</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1200</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                <span class="keyword">try</span> {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1201</td>
  <td class="nbHitsCovered">&nbsp;13</td>
  <td class="src"><pre class="src">&nbsp;                    map.put(key, value);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1202</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                } <span class="keyword">catch</span> (Exception e) {</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1203</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                    <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"Value ("</span>+value+<span class="string">") cannot be put for key ("</span>+key+<span class="string">") for the map: "</span> + map, e);</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1204</td>
  <td class="nbHitsCovered">&nbsp;13</td>
  <td class="src"><pre class="src">&nbsp;                }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1205</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1206</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1207</td>
  <td class="nbHitsCovered">&nbsp;13</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1208</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1209</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/**</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1210</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * Set a value on a map using the name as the key,</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1211</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * name is expected to be the key for the map only: e.g. "mykey",</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1212</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * if it happens to be of the form: thing[mykey] then the key will be extracted</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1213</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * &lt;br/&gt;</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1214</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * &lt;b&gt;WARNING: Cannot handle a nested name or mapped/indexed key&lt;/b&gt;</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1215</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1216</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    @SuppressWarnings(<span class="string">"unchecked"</span>)</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1217</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">void</span> setValueOfMap(Map map, String name, Object value) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1218</td>
  <td class="nbHitsCovered">&nbsp;19</td>
  <td class="src"><pre class="src">&nbsp;        Resolver resolver = getResolver();</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1219</td>
  <td class="nbHitsCovered">&nbsp;19</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (resolver.isMapped(name)) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1220</td>
  <td class="nbHitsCovered">&nbsp;3</td>
  <td class="src"><pre class="src">&nbsp;            String propName = resolver.getProperty(name);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1221</td>
  <td class="nbHitsCovered">&nbsp;3</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">if</span> (propName == <span class="keyword">null</span> || propName.length() == 0) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1222</td>
  <td class="nbHitsCovered">&nbsp;3</td>
  <td class="src"><pre class="src">&nbsp;                name = resolver.getKey(name);</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1223</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1224</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1225</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1226</td>
  <td class="nbHitsCovered">&nbsp;19</td>
  <td class="src"><pre class="src">&nbsp;        map.put(name, value);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1227</td>
  <td class="nbHitsCovered">&nbsp;19</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1228</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1229</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/**</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1230</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * This will set the value on a field, types must match,</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1231</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * for internal use only,</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1232</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * Reduce code duplication</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1233</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param obj any object</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1234</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param cp the analysis object which must match the given name and object</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1235</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param value the value for the field</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1236</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws FieldSetValueException if the field is not writeable or visible</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1237</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws IllegalArgumentException if inputs are invalid (null)</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1238</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1239</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">void</span> assignFieldValue(Object obj, ClassProperty cp, Object value) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1240</td>
  <td class="nbHitsCovered">&nbsp;148</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (obj == <span class="keyword">null</span>) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1241</td>
  <td class="nbHitsCovered">&nbsp;1</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"Object cannot be null"</span>);</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1242</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1243</td>
  <td class="nbHitsCovered">&nbsp;147</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (cp == <span class="keyword">null</span>) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1244</td>
  <td class="nbHitsCovered">&nbsp;1</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"ClassProperty cannot be null"</span>);</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1245</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1246</td>
  <td class="nbHitsCovered">&nbsp;146</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (cp.isPublicField()) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1247</td>
  <td class="nbHitsCovered">&nbsp;32</td>
  <td class="src"><pre class="src">&nbsp;            Field field = cp.getField();</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1248</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">try</span> {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1249</td>
  <td class="nbHitsCovered">&nbsp;32</td>
  <td class="src"><pre class="src">&nbsp;                field.set(obj, value);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1250</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            } <span class="keyword">catch</span> (Exception e) {</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1251</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                <span class="comment">// catching the general exception is correct here, translate the exception</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1252</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                <span class="keyword">throw</span> <span class="keyword">new</span> FieldSetValueException(<span class="string">"Field set failure setting value ("</span>+value+<span class="string">") for name ("</span>+cp.getFieldName()+<span class="string">") on: "</span> + obj, </span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1253</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                        cp.getFieldName(), value, obj, e);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1254</td>
  <td class="nbHitsCovered">&nbsp;32</td>
  <td class="src"><pre class="src">&nbsp;            }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1255</td>
  <td class="nbHitsCovered">&nbsp;32</td>
  <td class="src"><pre class="src">&nbsp;        } <span class="keyword">else</span> {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1256</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            <span class="comment">// must be a property then</span></pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1257</td>
  <td class="nbHitsCovered">&nbsp;114</td>
  <td class="src"><pre class="src">&nbsp;            Method setter = cp.getSetter();</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1258</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">try</span> {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1259</td>
  <td class="nbHitsCovered">&nbsp;114</td>
  <td class="src"><pre class="src">&nbsp;                setter.invoke(obj, <span class="keyword">new</span> Object[] {value});</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1260</td>
  <td class="nbHitsCovered">&nbsp;4</td>
  <td class="src"><pre class="src">&nbsp;            } <span class="keyword">catch</span> (Exception e) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1261</td>
  <td class="nbHitsCovered">&nbsp;4</td>
  <td class="src"><pre class="src">&nbsp;                <span class="keyword">throw</span> <span class="keyword">new</span> FieldSetValueException(<span class="string">"Setter method failure setting value ("</span>+value+<span class="string">") for name ("</span>+cp.getFieldName()+<span class="string">") on: "</span> + obj, </pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1262</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                        cp.getFieldName(), value, obj, e);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1263</td>
  <td class="nbHitsCovered">&nbsp;110</td>
  <td class="src"><pre class="src">&nbsp;            }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1264</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1265</td>
  <td class="nbHitsCovered">&nbsp;142</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1266</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1267</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/**</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1268</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * Get the field if it exists for this class</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1269</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param cd the class data cache object</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1270</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param name the name of the field</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1271</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @return the field if found OR null if not</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1272</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1273</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> Field getFieldIfPossible(ClassData&lt;?&gt; cd, String name) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1274</td>
  <td class="nbHitsCovered">&nbsp;15</td>
  <td class="src"><pre class="src">&nbsp;        Field f = <span class="keyword">null</span>;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1275</td>
  <td class="nbHitsCovered">&nbsp;15</td>
  <td class="src"><pre class="src">&nbsp;        List&lt;Field&gt; fields = cd.getFields();</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1276</td>
  <td class="nbHitsCovered">&nbsp;15</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">for</span> (Field field : fields) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1277</td>
  <td class="nbHitsCovered">&nbsp;50</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">if</span> (field.getName().equals(name)) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1278</td>
  <td class="nbHitsCovered">&nbsp;10</td>
  <td class="src"><pre class="src">&nbsp;                f = field;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1279</td>
  <td class="nbHitsCovered">&nbsp;10</td>
  <td class="src"><pre class="src">&nbsp;                <span class="keyword">break</span>;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1280</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1281</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1282</td>
  <td class="nbHitsCovered">&nbsp;15</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> f;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1283</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1284</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1285</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">final</span> <span class="keyword">class</span> Holder {</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1286</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">public</span> String name;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1287</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">public</span> Object object;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1288</td>
  <td class="nbHitsCovered">&nbsp;1324</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">public</span> Holder(String name, Object object) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1289</td>
  <td class="nbHitsCovered">&nbsp;1324</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">this</span>.name = name;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1290</td>
  <td class="nbHitsCovered">&nbsp;1324</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">this</span>.object = object;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1291</td>
  <td class="nbHitsCovered">&nbsp;1324</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1292</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">public</span> String getName() {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1293</td>
  <td class="nbHitsCovered">&nbsp;1324</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">return</span> name;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1294</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1295</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">public</span> Object getObject() {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1296</td>
  <td class="nbHitsCovered">&nbsp;1324</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">return</span> object;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1297</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1298</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1299</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1300</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    @Override</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1301</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">public</span> String toString() {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1302</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        <span class="keyword">return</span> <span class="string">"Field::c="</span>+FieldUtils.timesCreated+<span class="string">":s="</span>+singleton+<span class="string">":resolver="</span> + getResolver().getClass().getName();</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1303</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1304</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1305</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">// STATIC access</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1306</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1307</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">static</span> SoftReference&lt;FieldUtils&gt; instanceStorage;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1308</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/**</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1309</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * Get a singleton instance of this class to work with (stored statically) &lt;br/&gt;</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1310</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * &lt;b&gt;WARNING&lt;/b&gt;: do not hold onto this object or cache it yourself, call this method again if you need it again</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1311</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @return a singleton instance of this class</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1312</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1313</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">public</span> <span class="keyword">static</span> FieldUtils getInstance() {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1314</td>
  <td class="nbHitsCovered">&nbsp;644</td>
  <td class="src"><pre class="src">&nbsp;        FieldUtils instance = (instanceStorage == <span class="keyword">null</span> ? <span class="keyword">null</span> : instanceStorage.get());</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1315</td>
  <td class="nbHitsCovered">&nbsp;644</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (instance == <span class="keyword">null</span>) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1316</td>
  <td class="nbHitsCovered">&nbsp;1</td>
  <td class="src"><pre class="src">&nbsp;            instance = FieldUtils.setInstance(<span class="keyword">null</span>);</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1317</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1318</td>
  <td class="nbHitsCovered">&nbsp;644</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> instance;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1319</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1320</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/**</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1321</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * Set the singleton instance of the class which will be stored statically</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1322</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param instance the instance to use as the singleton instance</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1323</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1324</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">public</span> <span class="keyword">static</span> FieldUtils setInstance(FieldUtils newInstance) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1325</td>
  <td class="nbHitsCovered">&nbsp;21</td>
  <td class="src"><pre class="src">&nbsp;        FieldUtils instance = newInstance;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1326</td>
  <td class="nbHitsCovered">&nbsp;21</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (instance == <span class="keyword">null</span>) {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1327</td>
  <td class="nbHitsCovered">&nbsp;1</td>
  <td class="src"><pre class="src">&nbsp;            instance = <span class="keyword">new</span> FieldUtils();</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1328</td>
  <td class="nbHitsCovered">&nbsp;1</td>
  <td class="src"><pre class="src">&nbsp;            instance.singleton = <span class="keyword">true</span>;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1329</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1330</td>
  <td class="nbHitsCovered">&nbsp;21</td>
  <td class="src"><pre class="src">&nbsp;        FieldUtils.timesCreated++;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1331</td>
  <td class="nbHitsCovered">&nbsp;21</td>
  <td class="src"><pre class="src">&nbsp;        instanceStorage = <span class="keyword">new</span> SoftReference&lt;FieldUtils&gt;(instance);</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1332</td>
  <td class="nbHitsCovered">&nbsp;21</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> instance;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1333</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1334</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1335</td>
  <td class="nbHitsCovered">&nbsp;1</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">int</span> timesCreated = 0;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1336</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">int</span> getTimesCreated() {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1337</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        <span class="keyword">return</span> timesCreated;</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1338</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1339</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1340</td>
  <td class="nbHitsCovered">&nbsp;20</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> <span class="keyword">boolean</span> singleton = <span class="keyword">false</span>;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1341</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">public</span> <span class="keyword">boolean</span> isSingleton() {</pre></td>
</tr>
<tr>
  <td class="numLineCover">&nbsp;1342</td>
  <td class="nbHitsUncovered">&nbsp;0</td>
  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        <span class="keyword">return</span> singleton;</span></pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1343</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1344</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td>
</tr>
<tr>
  <td class="numLine">&nbsp;1345</td>
  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;}</pre></td>
</tr>
</table>
<div class="footer">
Reports generated by <a href="http://cobertura.sourceforge.net/" target="_top">Cobertura</a>.
</div>
</body>
</html>
